AIKit: LLM 파인튜닝, 빌드 및 배포를 위한 프레임워크 (feat. Docker)
소개
AIKit은 대규모 언어 모델(LLM, Large Language Model)을 쉽게 호스팅, 배포, 구축 및 미세 조정할 수 있는 도구입니다. AI Kit은 미세조정(fine-tuning)과 추론(inference)의 두가지 용도로 사용할 수 있는 기능들을 제공합니다.
-
미세조정(fine-tuning) 측면: 파인튜닝을 위한 확장 가능한 인터페이스를 제공합니다. 특히, Unsloth를 지원하여 더 빠르고 메모리 효율적인 파인튜닝을 지원합니다.
-
추론(inference) 측면: LocalAI를 사용하여 다양한 추론 기능을 지원하며, OpenAI API와 호환되는 REST API 응답을 제공하여 Kubectl AI나 Chatbot-UI 등과 같은 OpenAI API 호환 클라이언트를 사용할 수 있습니다.
AIKit은 기존의 모델 관리 도구와 달리 Docker 기반으로 동작하여 별도의 GPU나 인터넷 연결 없이도 로컬 환경에서 사용할 수 있습니다. 또한, OpenAI API와 호환되는 REST API를 제공하여 다양한 클라이언트와 쉽게 통합할 수 있다는 점에서 차별화됩니다. 이러한 특징은 Kubeflow, TensorFlow Serving 등과 같은 다른 AI 모델 관리 도구와 비교했을 때, 더욱 간편하고 접근성이 높다는 장점이 있습니다.
주요 기능
-
GPU, 인터넷 액세스 또는 추가 도구가 필요없는 Docker 사용
-
최소 이미지 크기, 커스텀 distroless 기반 이미지로 보안 취약점 감소.
-
추론 및 미세 조정을 위한 선언적 구성 [설정] 가능(Inference API Specifications | AIKit)
-
OpenAI API 호환
-
Stable Diffusion으로 이미지 생성 지원
-
다양한 모델 지원: GGUF(
llama
), GPTQ(exllama
), EXL2(exllama2
), GGML(llama-ggml
), Mamba 모델 지원 -
하나의 Docker 이미지로 여러 모델 지원 가능
-
직접 호스팅하는 로컬 환경 또는 원격 컨테이너 레지스트리를 사용하여 엣지에서 추론할 수 있는 에어갭(Air-Gapped) 환경 지원
사용 방법
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 3 | Instruct | 8B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama3:8b |
llama-3-8b-instruct |
Llama |
Llama 3 | Instruct | 70B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama3:70b |
llama-3-70b-instruct |
Llama |
Llama 2 | Chat | 7B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama2:7b |
llama-2-7b-chat |
Llama |
Llama 2 | Chat | 13B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/llama2:13b |
llama-2-13b-chat |
Llama |
Mixtral | Instruct | 8x7B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/mixtral:8x7b |
mixtral-8x7b-instruct |
Apache |
Phi 3 | Instruct | 3.8B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/phi3:3.8b |
phi-3-3.8b |
MIT |
Gemma 1.1 | Instruct | 2B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/gemma:2b |
gemma-2b-instruct |
Gemma |
Codestral 0.1 | Code | 22B | docker run -d --rm -p 8080:8080 ghcr.io/sozercan/codestral:22b |
codestral-22b |
MNLP |
NVIDIA CUDA 지원 모델
GPU 가속을 활성화하려면 GPU 가속 문서를 참고하세요. 이미 NVIDIA-Docker를 위한 설정이 되어 있는 경우, CPU와 GPU 섹션의 차이점은 GPU 가속을 활성화하기 위한 명령어에
--gpus all
만 추가하면 됩니다.
모델 | 최적화 | 파라미터 | 명령어 | 모델명 | 라이선스 |
---|---|---|---|---|---|
Llama 3 | Instruct | 8B | docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama3:8b |
llama-3-8b-instruct |
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 2 | Chat | 7B | docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama2:7b |
llama-2-7b-chat |
Llama |
Llama 2 | Chat | 13B | docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/llama2:13b |
llama-2-13b-chat |
Llama |
Mixtral | Instruct | 8x7B | docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/mixtral:8x7b |
mixtral-8x7b-instruct |
Apache |
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 |
Gemma 1.1 | Instruct | 2B | docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/gemma:2b |
gemma-2b-instruct |
Gemma |
Codestral 0.1 | Code | 22B | docker run -d --rm --gpus all -p 8080:8080 ghcr.io/sozercan/codestral:22b |
codestral-22b |
MNLP |
Llama2 모델을 활용한 데모
Llama2 모델 이미지 만들기
생성한 이미지를 사용한 추론용 Docker 컨테이너 실행
라이선스
이 프로젝트는 MIT License로 공개 및 배포되고 있습니다.
AIKit GitHub 저장소
AIKit 공식 문서
AIKit을 활용한 파인튜닝 가이드 (영문)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~