소개
이 글에서는 8 x H100 GPU 인스턴스를 활용하여 Llama3.1–405B를 배포하는 방법을 소개합니다. 대규모 모델을 직접 배포하는 것은 시간과 비용이 많이 드는 작업입니다. 이러한 번거롭고 고비용의 작업을 피하려면 Llama3.1–405B를 직접 사용하는 것을 고려해 보세요. AI 업계에서 우수한 모델 제공 플랫폼을 찾아 OpenAI API 표준을 통해 추론 서비스를 이용하세요. 사용하기 쉽고 종량제 요금 모델은 비용 효율적이며 관리하기 쉽습니다. Novita AI 가 제공하는 Llama3.1–405B 추론 API 서비스를 추천합니다.
Llama3.1–405B 배포 요구 사항
Meta에서 출시한 모든 Llama3.1 모델에는 8B, 70B, 405B가 포함됩니다. Llama3.1–405B 모델은 매개변수가 4050억 개에 달하는 현재까지 가장 큰 오픈소스 대규모 언어 모델입니다. 이 모델의 성능 평가 결과는 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 x H100 GPU 서버 인스턴스를 임대하고 약 1.5TB의 저장 공간을 확보하는 것이 좋습니다.
- 모델: Hugging Face 계정을 준비하고 원본 Llama3.1–405B 또는 FP8 또는 INT4 버전의 모델을 다운로드합니다.
- 추론 프레임워크: 최신 버전의 vLLM v0.5.3.post1을 다운로드합니다.
모델 준비
8소켓 H100 GPU 서버를 준비한 후 서버에 로그인하여 모델을 다운로드합니다. FP16 버전의 모델을 다운로드하고 FP8 및 INT4 양자화 버전으로 변환하는 방법을 소개합니다(물론 Hugging Face에서 사전 양자화된 모델을 다운로드할 수도 있습니다).
Hugging Face 플랫폼에서 Instruct 버전을 다운로드하는 것이 좋습니다. 먼저 Hugging Face에 가입하고 로그인합니다. 설정 페이지에서 현재 사용자의 액세스 토큰을 생성하고 저장합니다. 이 토큰은 모델 다운로드 시 사용됩니다.
Llama3.1–405B 모델 페이지를 엽니다: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct. Meta에 모델 신청을 제출하고 약 30분 동안 승인을 기다립니다.
GPU 서버로 돌아와서 Hugging Face 클라이언트 애플리케이션을 설치하고 모델 다운로드를 시작합니다. 명령어는 다음과 같습니다.
pip install huggingface-hub
huggingface-cli login ## Input Access Token
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## Start Downloading 405B
오랜 시간(인터넷 상태에 따라 다름)이 지나면 800GB의 405B 모델이 로컬 머신에 다운로드됩니다. “huggingface-cli scan-cache”를 호출하여 자세한 모델 정보를 확인합니다.
다음으로 원본 모델에 대해 FP8 및 INT4 양자화를 수행합니다.
먼저 FP8 양자화 도구를 다운로드합니다. 오픈소스 AutoFP8을 사용할 수 있습니다: https://github.com/neuralmagic/AutoFP8. 여기에 포함된 스크립트를 호출하여 동적 모드로 양자화합니다. 다음과 같이 진행합니다.
git clone https://github.com/neuralmagic/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”을 사용하여 양자화된 모델 버전의 출력 경로를 지정합니다. 이는 가중치 전용 양자화이므로 전체 속도가 빠릅니다.
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 양자화와 마찬가지로 오픈소스 AutoAWQ 도구를 사용하여 INT4 양자화를 수행할 수 있습니다. 이 양자화 방법의 주소는 https://github.com/casper-hansen/AutoAWQ입니다. 양자화 단계는 다음과 같습니다.

추론 프레임워크 구축
강력한 오픈소스 커뮤니티의 지원을 받는 vLLM은 다양한 LLM에 대한 지원을 제공하고 적시에 업데이트되는 효율적인 추론 프레임워크입니다. v0.5.3.post1부터 vLLM은 Llama 3.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을 시작하고 Llama 3.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 추론 프레임워크가 실행되면 포트 18001에서 수신 대기하며 사용자 요청을 수신하고 처리합니다. 로컬 터미널에서 completions 엔드포인트에 POST 요청을 보내 추론 서비스를 빠르게 확인할 수 있습니다. 명령어는 다음과 같습니다.
curl -X POST -H “Content-Type: application/json”
http://localhost:18001/v1/completions
-d ‘{“model”: “llama31-405b-fp8”, “prompt”: “San Francisco is a”}’
이제 Llama 3.1 모델 배포가 완료되었습니다.
Novita AI 는 모든 것을 하나로 통합한 클라우드 플랫폼으로, AI 야망을 실현할 수 있도록 지원합니다. 통합 API, 서버리스, GPU 인스턴스 등 비용 효율적인 도구를 제공합니다. 인프라를 제거하고 무료로 시작하여 AI 비전을 현실로 만드세요.
