LlamaNet: 1~2줄의 코드 변환만으로 OpenAI 기반 애플리케이션을 llama.cpp 기반 로컬 모델로 쉽게 변경 가능한 라이브러리

LlamaNet: 1~2줄의 코드 변환만으로 OpenAI 기반 애플리케이션을 llama.cpp 기반 모델로 쉽게 변경 가능한 라이브러리

소개

라마넷(Llamanet)은 OpenAI 기반의 앱을 llama.cpp 앱으로 단 한 줄의 코드만으로 전환할 수 있는 오픈소스 라이브러리/도구입니다. (모델도 변경해야 하므로 2줄) 별도의 설정 없이 그리고 서드파티 의존성 없이 작동하므로, 아무것도 몰라도 OpenAI API를 사용하는 것처럼 로컬 모델로 바로 변경하여 사용할 수 있습니다.

LlamaNet이 해결하고자 하는 문제들은 다음과 같습니다:

  • OpenAI API 기반의 LLM 앱을 로컬 LLM으로 즉시 포팅하고 싶으신가요?
  • 앱 사용자가 서드파티 LLM 앱이나 서버를 다운로드할 필요 없이 앱을 사용하게 하고 싶으신가요?
  • 서드파티 시스템에 의존하지 않고 앱 자체에서 LLM 관리를 처리하고 싶으신가요?

LlamaNet은 상대적으로 가벼운 코드베이스를 가지고 있어, 설치와 실행이 용이하며, 최신 GPU 아키텍처에 최적화되어, 대규모 데이터셋을 빠르게 처리할 수 있습니다. 또한, 직관적인 인터페이스를 제공하여, 사용자가 쉽게 설정을 변경하고 조작할 수 있습니다.

주요 특징

LlamaNet의 주요 특징은 다음과 같습니다:

주요 기능

  1. 서드파티 LLM 없이 앱 배포: 라마넷은 LLM을 네이티브하게 제공하는 독립된 라이브러리/CLI 도구입니다. 서드파티 LLM 앱/서버를 다운로드할 필요가 없습니다. 사용자들은 앱만 설치하면 됩니다.

  2. OpenAI API 호환 서버: 라마넷은 Llama.cpp 서버를 실행하고 여러 서버로 라우팅할 수 있는 프록시 서버로, OpenAI API 호환됩니다. 기존의 OpenAI API 기반 앱을 한 줄의 코드만으로 Llama.cpp 기반 앱으로 전환할 수 있습니다.

  3. 자동 모델 관리 시스템: 내장된 모델 관리 시스템은 체크포인트를 별도로 다운로드할 필요를 없애줍니다. OpenAI 호환 API 요청을 Huggingface의 GGUF URL로 하면 자동으로 체크포인트를 다운로드하고 임베디드 llama.cpp 서버를 실행합니다. 이후 요청은 서버로 라우팅됩니다.

사용 데모

설치 및 사용 방법

Node.js에서의 설치 및 사용

npm을 사용한 설치:

# OpenAI 및 LlamaNet 라이브러리 설치
npm install llamanet openai

index.js 파일 생성 (또는 기존 파일 변경):

// 1. LlamaNet 불러오기
const llamanet = require("llamanet");
const OpenAI = require('openai');
(async () => {
  // 2. LlamaNet 시작하기
  await llamanet.run()
  const openai = new OpenAI()
  const stream = await openai.chat.completions.create({
    // 3. HuggingFace의 GGUF 모델 URL 지정하기
    model: "https://huggingface.co/microsoft/Phi-3-mini-4k-instruct-gguf/resolve/main/Phi-3-mini-4k-instruct-fp16.gguf",
    messages: [{
      role: 'user',
      content: "what comes after 1 2 3 5 8? give me as many variations as possible with reasons"
    }],
    stream: true,
  });
  for await (const chunk of stream) {
    process.stdout.write(chunk.choices[0]?.delta?.content || '');
  }
})();

Python에서의 설치 및 사용

pip를 사용한 설치:

pip install openai llamanet

app.py 파일 생성 (또는 기존 파일 변경):

from openai import OpenAI
import llamanet
llamanet.run()
client = OpenAI()
stream = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[{"role": "user", "content": "why did chicken cross the road?"}],
  stream=True,
)
for chunk in stream:
  if chunk.choices[0].delta.content is not None:
    print(chunk.choices[0].delta.content, end="")

CLI에서의 설치 및 사용

Linux/Mac에서의 설치:

LLAMANET_DEBUG=true npx llamanet@latest

Windows에서의 설치:

set LLAMANET_DEBUG=true && npx llamanet@latest

cURL로 테스트

curl --request POST \
     --url http://127.0.0.1:42424/v1/chat/completions \
     --header "Content-Type: application/json" \
     --data '{
       "model": "https://huggingface.co/microsoft/Phi-3-mini-4k-instruct-gguf/resolve/main/Phi-3-mini-4k-instruct-q4.gguf",
       "messages": [
         { "role": "system", "content": "You are a helpful assistant." },
         { "role": "user", "content": "Hello!" }
       ]
     }'

상세 API

on, off, start, stop, status, models 등과 같은 LlamaNet API에 대해서는 LlamaNet 홈페이지GitHub 저장소를 참고해주세요.

라이선스

LlamaNet은 MIT License로 공개 및 배포되고 있습니다.

:house: LlamaNet 홈페이지

:github: LlamaNet GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요