서문
Llama3.1의 출시는 즉시 전 세계의 주목을 받았으며, 오픈소스 모델이 처음으로 특정 지표에서 독점 모델에 근접하고 심지어 능가하는 이정표를 세웠습니다. 이 글에서는 Novita AI GPU 인스턴스를 사용하여 Llama3.1-405B 모델을 처음부터 배포하는 방법과 단계를 소개합니다. 특히, 대규모 모델을 처음부터 배포하는 것은 시간과 노력이 많이 드는 작업입니다. 이러한 번거로운 작업을 피하고 Llama3.1-405B 모델을 직접 사용하려면 업계에서 뛰어난 모델 호스팅 플랫폼을 찾아 OpenAI API 형태로 추론 서비스를 호출하는 것이 좋습니다. 사용이 편리할 뿐만 아니라 비용 측면에서도 매우 친근하며, 총 비용이 매우 낮고 통제 가능합니다. 현재 Novita AI는 Llama3.1의 API 서비스를 출시했으며, Playground에서 직접 체험할 수 있습니다: https://novita.ai/model-api/llm-api/playground
Llama3.1-405B 배포를 위한 기본 요구 사항
Meta가 오픈소스한 Llama3.1 시리즈 모델은 8B, 70B, 405B 세 가지 크기로 제공되며, 그중 405B 모델은 현재까지 가장 큰 오픈소스 대규모 언어 모델로, 매개변수 규모가 405억 개입니다. 이 모델의 여러 평가 결과에서 GPT-4 및 GPT-4o 모델을 능가하고 Claude3.5-Sonnet과 견줄 만한 성능을 보여줍니다. 이러한 대규모 모델을 GPU에 로드하는 것은 어려운 일입니다. 원본 FP16 버전의 405B 모델은 아래 그림과 같이 810GB의 GPU 메모리가 필요합니다. 그러나 현재 시장에서 가장 높은 사양의 GPU H100을 사용하더라도 최대 8카드 구성의 서버로는 이 버전의 모델을 직접 로드할 수 없습니다. FP16 버전의 모델을 더 낮은 정밀도 표현으로 양자화하여 메모리 요구 사항을 줄이고 GPU에 성공적으로 로드해야 합니다.

Llama3.1 시리즈의 모델 아키텍처는 Llama3에서 계승되었으며 구조가 매우 유사하여 추론 프레임워크에 매우 친화적입니다. vLLM과 같은 오픈소스 추론 솔루션은 신속하게 적응을 완료하고 Llama3.1-405B와 같은 대규모 모델의 추론을 지원할 수 있습니다. 요약하자면, Llama3.1-405B 추론 서비스 배포를 완료하려면 세 가지 측면에서 준비가 필요합니다:
- 하드웨어: 8개의 H100 GPU로 구성된 GPU 서버 인스턴스를 선택하고 약 1.5TB의 저장 공간을 확보하는 것이 좋습니다. Novita AI 콘솔을 통해 인스턴스를 선택하고 네트워크 볼륨을 마운트하여 저장 용량을 제공할 수 있습니다.

- 모델: Huggingface 계정을 준비하고 원본 Llama3.1-405B 모델을 다운로드하거나 FP8 또는 INT4 버전의 모델을 다운로드할 수도 있습니다.
- 추론 프레임워크: 최신 버전의 vLLM v0.5.3.post1을 다운로드합니다.
모델 준비
8개의 H100 카드가 장착된 GPU 서버를 준비한 후 서버에 로그인하여 모델 다운로드를 시작합니다. 여기서는 FP16 버전의 모델을 다운로드하고 수동으로 FP8 및 INT4 양자화 버전으로 변환하는 방법을 소개합니다(물론 Huggingface 플랫폼에서 직접 양자화된 모델을 다운로드할 수도 있습니다). Huggingface 플랫폼에서 Instruct 버전을 다운로드하는 것이 좋습니다. 먼저 Huggingface 플랫폼에 등록 및 로그인하고 설정 페이지에서 현재 사용자의 Access Token을 생성 및 저장합니다. 이 토큰은 모델 다운로드 시 사용됩니다. Llama3.1-405B 모델 홈페이지를 엽니다: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct, Meta에 모델 신청을 제출하고 약 30분 동안 승인을 기다립니다. GPU 서버로 돌아와 huggingface 클라이언트 프로그램을 설치하고 다음 명령으로 모델 다운로드를 시작합니다:
pip install huggingface-hub
huggingface-cli login ## Enter Access Token
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## Start downloading the 405B large model
오랜 대기 끝에(현재 네트워크 속도에 따라 다름) 800GB의 405B 대규모 모델이 로컬에 성공적으로 다운로드되며, "huggingface-cli scan-cache"를 호출하여 특정 모델 정보를 확인할 수 있습니다. 다음으로 원본 모델에 대해 FP8 및 INT4 양자화를 수행합니다. 먼저 FP8 양자화 도구를 다운로드합니다. 오픈소스 AutoFP8을 직접 사용할 수 있습니다: https://github.com/neuralmagic/AutoFP8, 스크립트를 사용하여 수동 양자화를 수행하며, 양자화 모드는 동적(dynamic)입니다:
git clone https://github.com/neural
magic/AutoFP8.git
cd AutoFP8
pip install -e . ## Compile and install the AutoFP8 tool locally
python3 examples/quantize.py --model-id meta-llama/Meta-Llama-3.1-405B-Instruct --save-dir Meta-Llama-3-8B-Instruct-fp8 --activation-scheme dynamic --max-seq-len 2048 --num-samples 2048
양자화 스크립트는 "–save-dir"로 양자화된 모델의 출력 경로를 지정합니다. 가중치만 양자화(weight-only quantization)이므로 전체 속도는 매우 빠릅니다. Meta가 양자화한 FP8 버전을 직접 다운로드할 수도 있습니다: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8. 다운로드 명령은 다음과 같습니다:
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8
FP8 양자화와 유사하게 INT4 버전 양자화에는 오픈소스 AutoAWQ를 사용할 수 있습니다. 이 양자화 솔루션의 주소는 다음과 같습니다: https://github.com/casper-hansen/AutoAWQ. 양자화 방법은 다음과 같습니다:
git clone https://github.com/casper-hansen/AutoAWQ.git
cd AutoAWQ
pip install -e . ## Compile and install the AutoAWQ tool locally
## Manually modify examples/quantize.py
model_path = 'meta-llama/Meta-Llama-3.1-405B-Instruct'
quant_path = 'meta-llama/Meta-Llama-3.1-405B-Instruct-awq'
# Start quantization
python examples/quantize.py
추론 프레임워크 구축
오픈소스 커뮤니티의 강력한 지원 덕분에 vLLM은 산업용 고효율 추론 프레임워크로 인정받고 있으며, 대규모 모델 지원이 매우 풍부하고 업데이트도 매우 신속합니다. v0.5.3.post1부터 vLLM은 Llama3.1 시리즈 모델의 추론 서비스를 지원합니다. vLLM 소스 코드를 다운로드하고 컴파일하는 방법은 다음과 같습니다:
git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
pip install -e .
컴파일이 성공적으로 완료되면 추론 서비스를 시작할 수 있습니다. vLLM을 로컬에서 컴파일하는 것 외에도 vLLM을 docker 이미지로 컴파일할 수 있습니다:
git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
docker build -t vllm_0.5.3.p1 .
공식 vLLM 이미지를 직접 다운로드할 수도 있습니다:
docker pull vllm/vllm-openai:v0.5.3.post1
추론 서비스 실행
vLLM 추론 프레임워크 구축을 완료한 후 vLLM을 시작하고 Llama3.1-405B 모델을 로드하여 추론 서비스를 시작할 수 있습니다. 로컬에서 컴파일된 vLLM 추론 프레임워크의 경우 vLLM 소스 코드의 루트 디렉토리로 이동한 후 다음 명령을 실행하여 추론 서비스를 시작합니다:
cd vllm
python3 -m vllm.entrypoints.openai.api_server --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768
docker 컨테이너에서 추론 서비스를 실행하는 경우 다음 명령을 참조할 수 있습니다:
docker run -d --gpus all --privileged --ipc=host --net=host vllm/vllm-openai:v0.5.3.post1 --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768
vLLM 추론 프레임워크가 성공적으로 실행되면 포트를 수신합니다.
Novita AI 는 AI 야망을 실현하는 올인원 클라우드 플랫폼입니다. 통합 API, 서버리스, GPU 인스턴스 – 비용 효율적인 도구를 제공합니다. 인프라 문제를 없애고, 무료로 시작하여 AI 비전을 현실로 만드세요.
추천 읽기:
