AIKit: LLM 파인튜닝, 빌드 및 배포를 위한 프레임워크 (feat. Docker)

AIKit: LLM 파인튜닝, 빌드 및 배포를 위한 프레임워크 (feat. Docker)

AIKit: LLM 파인튜닝, 빌드 및 배포를 위한 프레임워크 (feat. Docker)

소개

AIKit은 대규모 언어 모델(LLM, Large Language Model)을 쉽게 호스팅, 배포, 구축 및 미세 조정할 수 있는 도구입니다. AI Kit은 미세조정(fine-tuning)과 추론(inference)의 두가지 용도로 사용할 수 있는 기능들을 제공합니다.

  • 미세조정(fine-tuning) 측면: 파인튜닝을 위한 확장 가능한 인터페이스를 제공합니다. 특히, Unsloth를 지원하여 더 빠르고 메모리 효율적인 파인튜닝을 지원합니다.

  • 추론(inference) 측면: LocalAI를 사용하여 다양한 추론 기능을 지원하며, OpenAI API와 호환되는 REST API 응답을 제공하여 Kubectl AIChatbot-UI 등과 같은 OpenAI API 호환 클라이언트를 사용할 수 있습니다.

AIKit은 기존의 모델 관리 도구와 달리 Docker 기반으로 동작하여 별도의 GPU나 인터넷 연결 없이도 로컬 환경에서 사용할 수 있습니다. 또한, OpenAI API와 호환되는 REST API를 제공하여 다양한 클라이언트와 쉽게 통합할 수 있다는 점에서 차별화됩니다. 이러한 특징은 Kubeflow, TensorFlow Serving 등과 같은 다른 AI 모델 관리 도구와 비교했을 때, 더욱 간편하고 접근성이 높다는 장점이 있습니다.

주요 기능

사용 방법

AIKit을 로컬 환경에서 빠르게 시작할 수 있습니다. Docker를 사용하여 간단히 실행할 수 있습니다. Docker가 설치된 상황에서, 미리 만들어진 Llama3-8B 이미지를 불러와 실행하는 것을 예시로 들어보겠습니다.

먼저, 다음과 같이 미리 만들어둔 이미지를 불러와 8080 포트로실행합니다:

docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama3:8b

이후, 다음과 같은 curl 명령어로 모델에 요청을 보낼 수 있습니다.

curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
    "model": "llama-3-8b-instruct",
    "messages": [{"role": "user", "content": "explain kubernetes in a sentence"}]
  }'

이에 대한 출력 예시는 다음과 같습니다:

{
  "model": "llama-3-8b-instruct",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": "Kubernetes is an open-source container orchestration system that automates the deployment, scaling, and management of applications and services, allowing developers to focus on writing code rather than managing infrastructure."
      }
    }
  ]
}

사전 제작된 모델

위의 예시에서 사용한 Llama3-8B 모델 이미지처럼, AIKit은 즉시 사용할 수 있도록 모델 이미지들을 미리 제작하여 제공합니다.

아래 목록에 원하는 특정 모델이 포함되지 않은 경우, 자신의 이미지를 생성한 뒤, 원하는 컨테이너 레지스트리에 호스팅할 수 있습니다!

CPU 모델

모델 최적화 파라미터 명령어 모델명 라이선스
:llama: Llama 3 Instruct 8B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama3:8b llama-3-8b-instruct Llama
:llama: Llama 3 Instruct 70B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama3:70b llama-3-70b-instruct Llama
:llama: Llama 2 Chat 7B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama2:7b llama-2-7b-chat Llama
:llama: Llama 2 Chat 13B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama2:13b llama-2-13b-chat Llama
:m: Mixtral Instruct 8x7B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/mixtral:8x7b mixtral-8x7b-instruct Apache
:parking: Phi 3 Instruct 3.8B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/phi3:3.8b phi-3-3.8b MIT
:abcd: Gemma 1.1 Instruct 2B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/gemma:2b gemma-2b-instruct Gemma
:keyboard: Codestral 0.1 Code 22B docker run -d --rm -p 8080:8080 ghcr.io/sozercan/codestral:22b codestral-22b MNLP

NVIDIA CUDA 지원 모델

:information_source: GPU 가속을 활성화하려면 GPU 가속 문서를 참고하세요. 이미 NVIDIA-Docker를 위한 설정이 되어 있는 경우, CPU와 GPU 섹션의 차이점은 GPU 가속을 활성화하기 위한 명령어에 --gpus all 만 추가하면 됩니다.

모델 최적화 파라미터 명령어 모델명 라이선스
:llama: Llama 3 Instruct 8B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama3:8b llama-3-8b-instruct Llama
:llama: Llama 3 Instruct 70B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama3:70b llama-3-70b-instruct Llama
:llama: Llama 2 Chat 7B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama2:7b llama-2-7b-chat Llama
:llama: Llama 2 Chat 13B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama2:13b llama-2-13b-chat Llama
:m: Mixtral Instruct 8x7B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/mixtral:8x7b mixtral-8x7b-instruct Apache
:parking: Phi 3 Instruct 3.8B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/phi3:3.8b phi-3-3.8b MIT
:abcd: Gemma 1.1 Instruct 2B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/gemma:2b gemma-2b-instruct Gemma
:keyboard: Codestral 0.1 Code 22B docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/codestral:22b codestral-22b MNLP

Llama2 모델을 활용한 데모

Llama2 모델 이미지 만들기

AIKit Demo - build model

생성한 이미지를 사용한 추론용 Docker 컨테이너 실행

AIKit Demo - inference

라이선스

이 프로젝트는 MIT License로 공개 및 배포되고 있습니다.

:github: AIKit GitHub 저장소

AIKit 공식 문서

AIKit을 활용한 파인튜닝 가이드 (영문)




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

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

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