Llamafile을 사용하여 LLM 실행 단순화

Llamafile을 사용하여 LLM 실행 단순화

소스 노드 : 3068075

개요

대규모 언어 모델을 실행하는 것은 항상 지루한 과정이었습니다. 이러한 LLM을 로드하려면 타사 소프트웨어 세트를 다운로드하거나 Python을 다운로드하고 많은 Pytorch 및 HuggingFace 라이브러리를 다운로드하여 환경을 만들어야 합니다. Pythonic Approach를 진행한다면, 모델을 다운로드하고 실행하기 위한 코드를 작성하는 과정을 거쳐야 합니다. 이 가이드에서는 이러한 LLM을 실행하는 더 쉬운 접근 방식을 살펴보겠습니다.

학습 목표

  • 기존 LLM 실행의 과제 이해
  • Llamafiles의 혁신적인 개념을 파악하세요
  • 자신만의 Llamafile 실행 파일을 쉽게 다운로드하고 실행하는 방법을 알아보세요.
  • 양자화된 LLM에서 Llamfile을 생성하는 방법 학습
  • 이 접근 방식의 한계를 식별하십시오.

이 기사는 데이터 과학 블로그.

차례

대규모 언어 모델의 문제점

LLM(대형 언어 모델)은 컴퓨터와 상호 작용하고, 텍스트를 생성하고, 언어를 번역하고, 다양한 종류의 창의적인 콘텐츠를 작성하고, 유익한 방식으로 질문에 답변하는 방식에 혁명을 일으켰습니다. 그러나 이러한 강력한 모델을 컴퓨터에서 실행하는 것은 종종 어려운 일이었습니다.

LLM을 실행하려면 Python과 많은 AI 종속성을 다운로드해야 하며, 게다가 이를 다운로드하고 실행하는 코드도 작성해야 합니다. 대규모 언어 모델을 위해 즉시 사용 가능한 UI를 설치하는 경우에도 많은 설정이 필요하므로 쉽게 잘못될 수 있습니다. 실행 파일처럼 설치하고 실행하는 것은 간단한 과정이 아니었습니다.

라마파일이란 무엇입니까?

Llamafile은 널리 사용되는 오픈 소스 대규모 언어 모델과 쉽게 작동하도록 만들어졌습니다. 이는 단일 파일 실행 파일입니다. 이는 LLM을 다운로드하여 실행 파일처럼 실행하는 것과 같습니다. 라이브러리를 처음 설치할 필요가 없습니다. 이 모든 것은 LLM이 다른 OS에서 실행되도록 하는 llama.cpp와 국제적인 libc 덕분에 가능했습니다.

llama.cpp는 Georgi Gerganov가 대규모 언어 모델을 양자화된 형식으로 실행하여 CPU에서 실행할 수 있도록 개발했습니다. llama.cpp는 소비자 하드웨어에서 양자화된 LLM을 실행할 수 있는 C 라이브러리입니다. 반면, 코스모폴리탄 libc는 인터프리터 없이 모든 OS(Windows, Mac, Ubuntu)에서 실행될 수 있는 바이너리를 빌드하는 또 다른 C 라이브러리입니다. 따라서 Llamafile은 이러한 라이브러리 위에 구축되어 단일 파일 실행 가능 LLM을 생성할 수 있습니다.

사용 가능한 모델은 GGUF 양자화 형식입니다. GGUF는 llama.cpp의 창시자인 Georgi Gerganov가 개발한 대규모 언어 모델용 파일 형식입니다. GGUF는 대규모 언어 모델을 CPU 및 GPU에 효과적이고 효율적으로 저장, 공유 및 로드하기 위한 형식입니다. GGUF는 양자화 기술을 사용하여 모델을 원래의 16비트 부동 소수점에서 4비트 또는 8비트 정수 형식으로 압축합니다. 이 양자화된 모델의 가중치는 GGUF 형식으로 저장될 수 있습니다.

이를 통해 7GB VRAM이 장착된 컴퓨터에서 16억 매개변수 모델을 더 쉽게 실행할 수 있습니다. GPU 없이도 대규모 언어 모델을 실행할 수 있습니다(Llamafile을 사용하면 GPU에서 LLM을 실행할 수도 있음). 현재 LlaVa, Mistral 및 WizardCoder와 같은 인기 있는 오픈 소스 대규모 언어 모델의 라마 파일을 쉽게 다운로드하고 실행할 수 있습니다.

원샷 실행 파일

이 섹션에서는 다중 모드 LlaVa Llama 파일을 다운로드하고 실행해 보겠습니다. 여기서는 GPU를 사용하지 않고 CPU에서 모델을 실행하겠습니다. 클릭하여 공식 Llamafile GitHub 저장소로 이동하세요. 여기에서 지금 확인해 보세요. LlaVa 1.5 모델을 다운로드합니다.

원샷 실행 파일 | 라마파일

모델 다운로드

위 그림은 사용 가능한 모든 모델을 이름, 크기 및 다운로드 가능한 링크와 함께 보여줍니다. LlaVa 1.5는 4GB 정도의 용량으로 이미지를 이해할 수 있는 강력한 멀티 모델입니다. 다운로드한 모델은 7비트로 양자화한 4억 매개변수 모델입니다. 모델을 다운로드한 후 다운로드한 폴더로 이동합니다.

"

그런 다음 CMD를 열고 이 모델이 다운로드된 폴더로 이동하여 다운로드한 파일 이름을 입력하고 Enter 키를 누릅니다.

llava-v1.5-7b-q4.llamafile
"

Mac 및 Linux 사용자의 경우

Mac 및 Linux의 경우 기본적으로 이 파일에 대한 실행 권한이 꺼져 있습니다. 따라서 llamafile에 대한 실행 권한을 제공해야 하며, 아래 명령을 실행하여 이를 수행할 수 있습니다.

chmod +x llava-v1.5-7b-q4.llamafile

llava-v1.5-7b-q4.llama 파일에 대한 실행 권한을 활성화하기 위한 것입니다. 또한, Mac과 Linux에서 파일을 실행하려면 파일 이름 앞에 “./”를 추가하세요. Enter 키워드를 누르면 모델이 시스템 RAM으로 푸시되고 다음 출력이 표시됩니다.

Mac 및 Linux 사용자용 | 라마파일

그러면 브라우저가 팝업되고 모델은 URL http://127.0.0.1:8080/에서 실행됩니다.

"
"

위 사진은 기본 프롬프트, 사용자 이름, LLM 이름, 프롬프트 템플릿 및 채팅 기록 템플릿을 보여줍니다. 이를 구성할 수 있지만 지금은 기본값을 사용하겠습니다.

아래에서는 Top P, Top K, 온도 등과 같은 구성 가능한 LLM 하이퍼파라미터도 확인할 수 있습니다. 이들조차도 지금은 기본값으로 두겠습니다. 이제 내용을 입력하고 보내기를 클릭해 보겠습니다.

"

위 사진에서 우리는 메시지를 입력했고 심지어 응답을 받은 것을 볼 수 있습니다. 그 아래에서 우리는 초당 약 6개의 토큰을 얻고 있음을 확인할 수 있습니다. 이는 전적으로 CPU에서 실행된다는 점을 고려하면 좋은 초당 토큰입니다. 이번에는 이미지로 시도해 보겠습니다.

CPU | 작은라마

100% 정확하지는 않지만 모델은 이미지에서 대부분의 내용을 바로 얻을 수 있습니다. 이제 LlaVa와 다단계 대화를 통해 채팅 기록을 기억하는지 테스트해 보겠습니다.

위 사진에서 LlaVa LLM이 대화를 잘 유지할 수 있었던 것을 볼 수 있습니다. 역사 대화를 받아들인 다음 응답을 생성할 수 있습니다. 생성된 마지막 답변은 사실이 아니지만 이전 대화를 수집하여 생성했습니다. 따라서 이런 방식으로 라마 파일을 다운로드하여 소프트웨어처럼 실행하고 다운로드한 모델로 작업할 수 있습니다.

라마파일 만들기

우리는 이미 공식 GitHub에 있는 Llamafile의 데모를 보았습니다. 종종 우리는 이러한 모델을 사용하고 싶지 않습니다. 대신, 우리는 대규모 언어 모델의 단일 파일 실행 파일을 만들고 싶습니다. 이 섹션에서는 단일 파일 실행 파일, 즉 양자화된 LLM에서 라마 파일을 생성하는 프로세스를 살펴보겠습니다.

LLM을 선택하세요

먼저 대규모 언어 모델을 선택하는 것부터 시작하겠습니다. 이 데모에서는 TinyLlama의 양자화된 버전을 선택하겠습니다. 여기서는 TinyLlama의 8비트 양자화된 GGUF 모델을 다운로드하겠습니다. 여기에서 지금 확인해 보세요. HuggingFace로 이동하여 모델을 다운로드하세요.)

작은라마

최신 라마파일 다운로드

공식 GitHub 링크에서 최신 라마파일 zip을 다운로드할 수 있습니다. 또한 zip을 다운로드하고 zip 파일을 추출하십시오. 이 문서의 현재 버전은 라마 파일-0.6입니다. 라마 추출 후 bin 폴더와 파일 폴더에는 아래 그림과 같은 파일이 포함됩니다.

"

이제 다운로드한 TinyLlama 8비트 양자화 모델을 이 bin 폴더로 이동합니다. 단일 파일 실행 파일을 생성하려면 llamafile의 bin 폴더에 .args 파일을 생성해야 합니다. 이 파일에 다음 콘텐츠를 추가해야 합니다.

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • 첫 번째 행은 -m 플래그를 나타냅니다. 이는 모델의 가중치를 로드하고 있음을 llamafile에 알려줍니다.
  • 두 번째 줄에서는 다운로드한 모델 이름을 지정합니다. 이 이름은 .args 파일이 있는 동일한 디렉터리, 즉 llamafile의 bin 폴더에 있습니다.
  • 세 번째 줄에는 실행 파일을 실행하고 이를 웹 서버에 호스팅하려고 함을 나타내는 호스트 플래그를 추가합니다.
  • 마지막으로, 마지막 줄에 우리가 호스팅하려는 주소(localhost에 매핑됨)를 언급합니다. 그 뒤에는 라마 파일이 생성되면 인수를 전달할 수 있음을 지정하는 세 개의 점이 있습니다.
  • .args 파일에 다음 줄을 추가하고 저장합니다.

Windows 사용자

이제 다음 단계는 Windows 사용자를 위한 것입니다. Windows에서 작업하는 경우 WSL을 통해 Linux를 설치해야 했습니다. 그렇지 않다면 클릭하세요. 여기에서 지금 확인해 보세요. WSL을 통해 Linux를 설치하는 단계를 진행합니다. Mac 및 Linux에서는 추가 단계가 필요하지 않습니다. 이제 터미널에서 llamafile 폴더의 bin 폴더를 열고(Windows에서 작업하는 경우 WSL에서 이 디렉터리를 엽니다) 다음 명령을 입력합니다.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

여기서는tinyllama-1.1b-chat-v0.3.Q3_0.llamafile이라는 새 파일을 생성합니다. 즉, .llamafile 확장자를 가진 파일을 생성하고 llamafile 파일을 이 새 파일로 이동합니다. 이제 이에 이어 다음 명령을 입력하겠습니다.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

여기서는 GitHub에서 llamafile zip을 다운로드할 때 제공된 zipalign 파일을 사용하여 작업합니다. 이 명령을 사용하여 양자화된 TinyLlama에 대한 라마 파일을 만듭니다. 이 zipalign 명령에 이전 단계에서 생성한tinyllama-1.1b-chat-v0.3.Q8_0.llama 파일을 전달한 다음 Tinyllama-1.1b-chat-v0.3.Q8_0.llama 파일을 전달합니다. bin 폴더에 있는 모델을 선택하고 마지막으로 이전에 만든 .args 파일을 전달합니다.

그러면 마침내 단일 파일 실행 파일인tinllama-1.1b-chat-v0.3.Q8_0.llamafile이 생성됩니다. 동일한 페이지에 있는지 확인하기 위해 이제 bin 폴더에 다음 파일이 포함됩니다.

실행 파일 | 라마파일

이제 이전과 동일한 방식으로 Tinllama-1.1b-chat-v0.3.Q8_0.llama 파일을 실행할 수 있습니다. Windows에서는 .llama 파일의 이름을 .exe로 바꾸고 두 번 클릭하여 실행할 수도 있습니다.

OpenAI 호환 서버

이 섹션에서는 Llamfile을 통해 LLM을 서버하는 방법을 살펴보겠습니다. 라마 파일을 실행하면 브라우저가 열리고 WebUI를 통해 LLM과 상호 작용할 수 있다는 것을 확인했습니다. 이것이 기본적으로 우리가 대규모 언어 모델 호스팅이라고 부르는 것입니다.

Llamafile을 실행하면 모델이 포트 8080의 로컬 호스트에서 제공되기 때문에 해당 LLM과 엔드포인트로 상호 작용할 수 있습니다. 서버는 OpenAI API 프로토콜, 즉 OpenAI GPT 엔드포인트와 유사하므로 다음을 수행합니다. OpenAI GPT 모델과 Llamafile로 실행되는 LLM 간을 쉽게 전환할 수 있습니다.

여기서는 이전에 생성된 TinyLlama 라마 파일을 실행하겠습니다. 이제 이것은 localhost 8080에서 실행되어야 합니다. 이제 Python의 OpenAI API 자체를 통해 테스트하겠습니다.

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • 여기서는 OpenAI 라이브러리를 사용하여 작업합니다. 하지만 OpenAI 엔드포인트를 지정하는 대신 TinyLlama가 호스팅되는 URL을 지정하고 "sk-no-token-필수" api_key의 경우
  • 그런 다음 클라이언트는 TinyLlama 엔드포인트에 연결됩니다.
  • 이제 OpenAI로 작업하는 방식과 유사하게 코드를 사용하여 TinyLlama와 채팅할 수 있습니다.
  • 이를 위해 우리는 완료 OpenAI 클래스. 우리는 새로운 것을 만듭니다 완료 와 더불어 .만들다() 이의를 제기하고 모델 이름 및 메시지와 같은 세부 정보를 전달합니다.
  • 메시지는 시스템, 사용자 또는 보조자가 될 수 있는 역할과 콘텐츠가 있는 사전 목록 형식입니다.
  • 마지막으로 위의 print 문을 통해 생성된 정보를 검색할 수 있습니다.

위의 출력은 아래에서 볼 수 있습니다.

라마파일 | 산출

이런 방식으로 우리는 라마파일을 활용하고 OpenAI API를 우리가 실행하기로 선택한 라마파일로 쉽게 대체할 수 있습니다.

라마파일 제한 사항

혁신적이긴 하지만 라마파일은 아직 개발 중입니다. 일부 제한 사항은 다음과 같습니다.

  • 제한된 모델 선택: 현재 모든 LLM이 라마파일 형식으로 제공되는 것은 아닙니다. 현재 사전 구축된 Llamafile 선택 항목은 계속해서 늘어나고 있습니다. 현재 Llamafile은 Llama 2, LlaVa, Mistral 및 Wizard Coder에서 사용할 수 있습니다.
  • 하드웨어 요구 사항 : Llamafile을 통해서도 LLM을 실행하려면 여전히 많은 계산 리소스가 필요합니다. 기존 방법보다 실행하기는 쉽지만, 오래되었거나 성능이 떨어지는 컴퓨터에서는 원활하게 실행하려면 도움이 필요할 수 있습니다.
  • 보안 문제: 신뢰할 수 없는 소스에서 실행 파일을 다운로드하고 실행하면 고유한 위험이 따릅니다. 따라서 이러한 라마 파일을 다운로드할 수 있는 신뢰할 수 있는 플랫폼이 있어야 합니다.

Llamafiles 대 나머지

Llamafiles 이전에는 대규모 언어 모델을 실행하는 다양한 방법이 있었습니다. 하나는 라마_cpp_python. 이것은 랩톱 및 데스크톱 PC와 같은 소비자 하드웨어에서 양자화된 대형 언어 모델을 실행할 수 있게 해주는 llama.cpp의 Python 버전입니다. 하지만 이를 실행하려면 Python은 물론 토치, 허깅페이스, 트랜스포머 등과 같은 딥 러닝 라이브러리도 다운로드하여 설치해야 합니다. 그 후에는 모델을 실행하기 위해 많은 코드 줄을 작성해야 했습니다.

그럼에도 불구하고 때로는 종속성 문제로 인해 문제가 발생할 수 있습니다(즉, 일부 라이브러리의 버전이 필요한 것보다 낮거나 높음). 그리고 또한 CTransformers 양자화된 LLM을 실행할 수 있는 라이브러리입니다. 이 경우에도 llama_cpp_python에 대해 논의한 것과 동일한 프로세스가 필요합니다.

그리고는 올라마. Ollama는 대규모 언어 모델, 특히 양자화된 모델을 쉽게 로드하고 실행할 수 있는 사용 편의성으로 인해 AI 커뮤니티에서 큰 성공을 거두었습니다. Ollama는 LLM을 위한 일종의 TUI(Terminal User Interface)입니다. Ollama와 Llamafile의 유일한 차이점은 공유 가능성입니다. 즉, 원할 경우 내 model.llama 파일을 누구와도 공유할 수 있으며 추가 소프트웨어를 다운로드하지 않고도 실행할 수 있습니다. 하지만 Ollama의 경우, 다른 사람이 Ollama 소프트웨어를 설치하거나 위의 Python 라이브러리를 통해서만 실행할 수 있는 model.gguf 파일을 공유해야 합니다.

리소스와 관련하여 이러한 모든 방법은 양자화된 모델을 실행하기 위해 아래의 llama.cpp를 사용하기 때문에 모두 동일한 양의 리소스가 필요합니다. 이들 사이에 차이점이 있는 사용 편의성에 관한 것입니다.

결론

Llamafile은 LLM을 쉽게 실행할 수 있도록 만드는 중요한 단계입니다. 사용하기 쉽고 이식성이 뛰어나 개발자, 연구자 및 일반 사용자에게 가능성의 세계를 열어줍니다. 제한 사항이 있지만 LLM 액세스를 민주화하는 라마파일의 잠재력은 분명합니다. 전문 개발자이든 호기심 많은 초보자이든 Llamafiles는 LLM의 세계를 탐험할 수 있는 흥미로운 가능성을 열어줍니다. 이 가이드에서는 Llamafiles를 다운로드하는 방법과 양자화된 모델을 사용하여 고유한 Llamafile을 만드는 방법까지 살펴보았습니다. . Llamafiles를 실행할 때 생성되는 OpenAI 호환 서버도 살펴봤습니다.

주요 요점

  • Llamafile은 LLM(대형 언어 모델)을 더 쉽고 쉽게 실행할 수 있게 해주는 단일 파일 실행 파일입니다.
  • 복잡한 설정 및 구성이 필요하지 않으므로 사용자는 Python 또는 GPU 요구 사항 없이 LLM을 직접 다운로드하고 실행할 수 있습니다.
  • Llamafile은 현재 LlaVa, Mistral 및 WizardCoder를 포함하여 제한된 오픈 소스 LLM에 사용할 수 있습니다.
  • 편리하기는 하지만 Llamafile에는 신뢰할 수 없는 소스에서 실행 파일을 다운로드하는 것과 관련된 하드웨어 요구 사항 및 보안 문제와 같은 제한 사항이 여전히 있습니다.
  • 이러한 제한에도 불구하고 Llamafiles는 개발자, 연구원, 일반 사용자를 위한 LLM 액세스 민주화를 향한 중요한 단계를 나타냅니다.

자주 묻는 질문

Q1. Llamafile을 사용하면 어떤 이점이 있나요?

A. Llamafile은 기존 LLM 구성 방법에 비해 몇 가지 장점을 제공합니다. Python을 설치하거나 GPU가 필요하지 않기 때문에 LLM을 더 쉽고 빠르게 설정하고 실행할 수 있습니다. 이를 통해 더 많은 사람들이 LLM을 더 쉽게 이용할 수 있습니다. 또한 Llamafile은 다양한 운영 체제에서 실행될 수 있습니다.

Q2. Llamafile의 제한 사항은 무엇입니까?

A. Llamafile은 많은 이점을 제공하지만 몇 가지 제한 사항도 있습니다. Llamafiles에서 사용할 수 있는 LLM 선택은 기존 방법에 비해 제한적입니다. 또한 Llamafiles를 통해 LLM을 실행하려면 여전히 상당한 양의 하드웨어 리소스가 필요하며 오래되거나 성능이 떨어지는 컴퓨터에서는 이를 지원하지 않을 수 있습니다. 마지막으로 보안 문제는 신뢰할 수 없는 소스에서 실행 파일을 다운로드하고 실행하는 것과 관련이 있습니다.

Q3. Llamafiles를 시작하려면 어떻게 해야 하나요?

A. Llamafiles를 시작하려면 공식 Llamafile GitHub 저장소를 방문하세요. 여기에서 사용하려는 LLM 모델에 대한 Llamafile을 다운로드할 수 있습니다. 파일을 다운로드한 후에는 실행 파일처럼 직접 실행할 수 있습니다.

Q4. Llamafiles에 내 LLM 모델을 사용할 수 있나요?

A. 아니요. 현재 Llamafiles는 사전 구축된 특정 모델만 지원합니다. 우리만의 Llamafile을 만드는 것은 향후 버전에서 계획되어 있습니다.

Q5. Llamafiles의 전망은 무엇입니까?

A. Llamafiles 개발자는 사용 가능한 LLM 모델의 선택 범위를 확대하고 이를 더욱 효율적으로 실행하며 보안 조치를 구현하기 위해 노력하고 있습니다. 이러한 발전의 목표는 기술적인 배경 지식이 거의 없는 더 많은 사람들이 Llamafile을 더욱 안전하게 사용할 수 있도록 하는 것입니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

타임 스탬프 :

더보기 분석 Vidhya