NVIDIA NIM을 사용한 로컬 LLAMA-3 배포: 종합 가이드
NVIDIA NIM을 사용하여 로컬 LLAMA-3 배포: 종합 가이드 - NVIDIA NIM을 사용하여 클라우드 또는 로컬 머신에서 효율적인 추론을 위해 LLAMA-3 모델을 배포하는 방법을 알아보세요. 설정, 성능 테스트, OpenAI API와의 통합을 다룹니다.
2025년 2월 16일

대규모 언어 모델의 힘을 unleash하세요. NVIDIA의 NIM을 사용하여 LLAMA-3 모델을 self-hosting 및 배포하는 방법에 대한 가이드를 통해 이 최첨단 기술을 활용하여 AI 프로젝트를 가속화하고 전례 없는 성능을 얻는 방법을 발견하세요.
대규모 언어 모델 추론을 위한 NVIDIA NIM 배포 방법
NVIDIA Launchpad 및 GPU 메트릭 대시보드 액세스
NVIDIA NIM Docker 컨테이너 설정
NVIDIA NIM API와 상호 작용
NVIDIA NIM API 엔드포인트 스트레스 테스트
OpenAI API 클라이언트를 사용한 NVIDIA NIM 활용
결론
대규모 언어 모델 추론을 위한 NVIDIA NIM 배포 방법
대규모 언어 모델 추론을 위한 NVIDIA NIM 배포 방법
자신의 클라우드 또는 로컬 머신에서 NVIDIA NIM을 사용하여 Lama 모델 제품군을 배포하려면 다음 단계를 따르세요:
-
환경 설정: 로컬 머신에서 실행하는 경우 Docker 엔진과 NVIDIA 컨테이너 툴킷을 설치하세요. 이에 대한 링크는 동영상 설명에 제공되어 있습니다.
-
API 키 얻기: NVIDIA 계정에 가입하여 API 키와 개인 키를 생성하세요. 이는 원격 서버와 상호 작용하는 데 필요합니다.
-
Docker 컨테이너 실행: 제공된 Docker 명령을 사용하여 컨테이너를 실행하고, 컨테이너 이름, GPU 사용, API 키, 모델 캐시 위치, 포트를 지정하세요. 이를 통해 Lama 3 80억 지침 모델을 다운로드하고 설정할 수 있습니다.
-
모델과 상호 작용: 제공된 cURL 명령을 사용하여 배포된 모델과 상호 작용하세요. 이 명령은 OpenAI API 표준을 따르므로 OpenAI 클라이언트를 사용하여 상호 작용할 수 있습니다.
-
API 스트레스 테스트:
requests
라이브러리를 사용하는 Python 스크립트를 사용하여 API 엔드포인트에 여러 개의 동시 요청을 보내고 GPU 사용량과 처리량을 모니터링하세요. -
OpenAI API 클라이언트 사용: NVIDIA NIM과 함께 OpenAI API 클라이언트를 사용하는 방법을 보여주세요. 이를 위해 기본 URL과 다른 매개변수를 배포된 모델에 맞게 업데이트하세요.
NVIDIA NIM은 대규모 언어 모델의 추론을 위한 편리하고 최적화된 방법을 제공하며, 다른 배포 옵션과 비교하여 최대 3배의 성능 향상을 달성할 수 있습니다. 90일 무료 평가판을 통해 이 솔루션을 더 자세히 탐색할 수 있습니다.
NVIDIA Launchpad 및 GPU 메트릭 대시보드 액세스
NVIDIA Launchpad 및 GPU 메트릭 대시보드 액세스
NVIDIA Launchpad와 GPU 메트릭 대시보드에 액세스하려면 다음 단계를 따르세요:
-
NVIDIA Launchpad의 일부로 Visual Studio Code라는 코드 IDE에 액세스할 수 있습니다. 이 IDE를 사용하여 GPU 인스턴스와 상호 작용하고 Llama 3 80억 지침 모델을 배포할 수 있습니다.
-
GPU 메트릭 대시보드는 GPU 사용량과 성능에 대한 자세한 정보를 제공하는 Grafana 대시보드입니다. 이 대시보드에 액세스하여 GPU 사용률, CUDA 버전, GPU 드라이버 및 기타 관련 지표를 모니터링할 수 있습니다.
-
Grafana 대시보드는 시간에 따른 GPU 사용량의 시각적 표현을 제공하여 성능을 추적하고 배포를 최적화할 수 있습니다.
-
터미널에서
watch
명령을 사용하여 실시간으로 GPU 사용량을 모니터링할 수 있습니다.watch -n 1 nvidia-smi
명령은 1초마다 GPU 사용량을 업데이트하여 GPU 사용률의 실시간 보기를 제공합니다. -
GPU 메트릭 대시보드와 실시간 모니터링 도구를 통해 Llama 3 80억 지침 모델 배포의 성능 특성을 이해하고 리소스 활용을 최적화하며 효율적인 추론을 보장할 수 있습니다.
NVIDIA NIM Docker 컨테이너 설정
NVIDIA NIM Docker 컨테이너 설정
NVIDIA NIM을 사용하여 Llama 3 80억 지침 모델을 배포하려면 다음 단계를 따르세요:
- 제공된 IDE를 열고 H100 GPU에 액세스할 수 있는지 확인하세요.
- NVIDIA 계정에 가입하고 필요한 키를 생성하여 API 키를 설정하세요.
- 다음 Docker 명령을 실행하여 NVIDIA NIM 컨테이너를 시작하세요:
docker run -it --gpus all -e NVIDIA_API_KEY=$NVIDIA_API_KEY -p 8000:8000 --name llama-3-8b-instruct nvcr.io/nvidia/nim:latest --model-name llama-3-8b-instruct
이 명령은 다음을 수행합니다:
- "llama-3-8b-instruct"라는 이름의 Docker 컨테이너 생성
- 시스템의 모든 GPU 사용
- NVIDIA_API_KEY 환경 변수 설정
- NIM 서버의 포트 8000 노출
- NVIDIA NIM 카탈로그의 "llama-3-8b-instruct" 모델 사용
- 컨테이너가 실행되면 제공된 cURL 명령을 사용하여 모델과 상호 작용할 수 있습니다:
curl -X POST -H "Content-Type: application/json" -d '{"model": "llama-3-8b-instruct", "prompt": "Tell me a joke.", "max_tokens": 1000, "temperature": 0.7, "top_p": 0.95, "stop": ["\n"]}' http://localhost:8000/v1/completions
이 cURL 명령은 "Tell me a joke." 프롬프트에 대한 응답을 생성하도록 localhost:8000에서 실행 중인 NIM 서버에 요청을 보냅니다.
-
API 엔드포인트를 스트레스 테스트하려면 제공된 Python 스크립트
test_server.py
를 실행할 수 있습니다. 이 스크립트는 NIM 서버에 여러 개의 동시 요청을 보내고 GPU 사용량을 모니터링합니다. -
마지막으로 OpenAI API 클라이언트를 사용하여 NIM 서버와 상호 작용할 수 있습니다. 이를 위해 기본 URL을 NIM 서버의 주소와 포트로 업데이트하세요.
이러한 단계를 따르면 NVIDIA NIM Docker 컨테이너를 사용하여 Llama 3 80억 지침 모델을 성공적으로 배포하고 성능을 테스트할 수 있습니다.
NVIDIA NIM API와 상호 작용
NVIDIA NIM API와 상호 작용
NVIDIA NIM API와 상호 작용하려면 간단한 cURL 명령을 사용할 수 있습니다. cURL 명령은 다음을 제공합니다:
- NVIDIA NIM 서버가 실행 중인 로컬 호스트의 포트 8000에 POST 요청을 보냅니다.
- OpenAI 호환 API를 사용하므로 OpenAI 클라이언트를 사용하여 NIM 서버와 상호 작용할 수 있습니다.
- 사용할 Llama 3 80억 지침 모델을 지정합니다.
- OpenAI가 예상하는 메시지 구조를 설정합니다.
max_tokens
및temperature
와 같은 추가 매개변수를 설정할 수 있습니다.
다음은 cURL 명령입니다:
curl -X POST -H "Content-Type: application/json" -d '{"model": "nlp/lama-3-8b-instruct", "messages": [{"role": "user", "content": "Tell me a joke"}], "max_tokens": 1000, "temperature": 0.7}' http://localhost:8000/v1/chat/completions
이 cURL 명령은 NVIDIA NIM 서버에 요청을 보내고, Llama 3 80억 지침 모델이 응답을 생성합니다. 응답은 스트리밍되며, 각 토큰이 생성되면 표시됩니다.
API 엔드포인트를 더 자세히 스트레스 테스트하려면 requests
라이브러리를 사용하는 Python 스크립트를 사용할 수 있습니다. 이 스크립트는 50개의 농담 생성 요청을 병렬로 보내고 GPU 사용량과 처리량을 모니터링합니다.
import requests
import threading
url = "http://localhost:8000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
payload = {
"model": "nlp/lama-3-8b-instruct",
"messages": [{"role": "user", "content": "Tell me 50 jokes"}],
"max_tokens": 1000,
"temperature": 0.7,
"stream": False
}
def send_requests():
for _ in range(50):
response = requests.post(url, headers=headers, json=payload)
print(response.json())
threads = []
for _ in range(10):
t = threading.Thread(target=send_requests)
t.start()
threads.append(t)
for thread in threads:
thread.join()
이 스크립트는 NVIDIA NIM 서버와 OpenAI 호환 API를 사용하는 방법을 보여줍니다. NVIDIA NIM 서버가 대규모 언어 모델에 대한 고성능 추론을 제공할 수 있으며, 다른 배포 옵션과 비교하여 최대 3배의 성능 향상을 달성할 수 있음을 보여줍니다.
NVIDIA NIM API 엔드포인트 스트레스 테스트
NVIDIA NIM API 엔드포인트 스트레스 테스트
NVIDIA NIM API 엔드포인트를 스트레스 테스트하려면 requests
라이브러리를 활용하는 간단한 Python 스크립트를 사용할 수 있습니다. 다음과 같이 작동합니다:
-
API 엔드포인트 URL을 정의합니다. 이 경우 로컬 호스트를 사용하고 있으므로 로컬 호스트를 사용합니다. 원격 서버에 배포하는 경우 외부 IP 주소를 사용하고 포트 포워딩을 활성화해야 합니다.
-
필요한 헤더를 설정하며, 여기에는
Content-Type
헤더를application/json
으로 설정합니다. -
페이로드를 생성합니다. 여기에는 모델 이름(
"model": "llama-3-8b-instruct"
), 프롬프트("prompt": "Tell me 50 jokes."
),max_tokens
,temperature
,stop
등의 다른 매개변수가 포함됩니다. -
send_requests()
함수를 정의하여requests.post()
메서드와 앞서 정의한 URL, 헤더, 페이로드를 사용하여 요청을 보냅니다. -
멀티스레딩을 사용하여
send_requests()
함수의 여러 인스턴스를 동시에 실행하여 API 엔드포인트에 많은 요청을 시뮬레이션합니다. -
watch
명령과nvidia-smi
도구를 사용하여 실시간으로 GPU 사용량을 모니터링합니다.
출력은 API 엔드포인트가 상당한 수의 동시 요청을 처리할 수 있음을 보여줍니다. 평균 처리량은 약 2,500개의 토큰/초입니다. GPU 사용률도 상대적으로 높게 유지되어 NVIDIA NIM이 하드웨어 리소스를 효과적으로 활용하여 고성능 추론을 제공하고 있음을 보여줍니다.
이 스트레스 테스트는 NVIDIA NIM 솔루션의 확장성과 성능을 입증하며, 이는 프로덕션 환경에서 대규모 언어 모델을 배포하는 데 매력적인 옵션이 될 수 있습니다.
OpenAI API 클라이언트를 사용한 NVIDIA NIM 활용
OpenAI API 클라이언트를 사용한 NVIDIA NIM 활용
OpenAI API 클라이언트를 NVIDIA NIM과 함께 사용하려면 다음 단계를 따르세요:
- 기본 URL을 NVIDIA NIM 인스턴스의 URL로 변경합니다. 이 예에서는
localhost:8000
에서 실행 중입니다:
openai.api_base = "http://localhost:8000"
자주하는 질문
자주하는 질문