使用 NVIDIA NIM 部署本地 LLAMA-3:全面指南
使用 NVIDIA NIM 部署本地 LLAMA-3:全面指南 - 了解如何使用 NVIDIA NIM 部署 LLAMA-3 模型,在您的云端或本地机器上进行高效推理。涵盖设置、性能测试和与 OpenAI API 的集成。
2025年2月20日

利用我们关于使用 NVIDIA 的 NIM 自托管和部署 LLAMA-3 模型的指南,释放大型语言模型的力量。探索如何利用这项尖端技术来加速您的 AI 项目并获得无与伦比的性能。
如何部署NVIDIA NIM进行大型语言模型推理
访问NVIDIA Launchpad和GPU指标仪表板
设置NVIDIA NIM Docker容器
与NVIDIA NIM API交互
压力测试NVIDIA NIM API端点
将NVIDIA NIM与OpenAI API客户端一起使用
结论
如何部署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客户端: 演示如何使用OpenAI API客户端与NVIDIA NIM交互,方法是更新基URL和其他参数以匹配部署的模型。
NVIDIA NIM提供了一种方便且优化的方式来部署大型语言模型进行推理,可以实现高达3倍的性能提升,相比其他部署选项。90天免费试用让您可以进一步探索这个解决方案。
访问NVIDIA Launchpad和GPU指标仪表板
访问NVIDIA Launchpad和GPU指标仪表板
要访问NVIDIA Launchpad和GPU指标仪表板,请按照以下步骤操作:
-
作为NVIDIA Launchpad的一部分,您可以访问代码IDE,即Visual Studio Code。您可以使用此IDE与GPU实例交互并部署Llama 3 80亿指令模型。
-
GPU指标仪表板是一个Grafana仪表板,提供有关GPU使用情况和性能的详细信息。您可以访问此仪表板来监控GPU利用率、CUDA版本、GPU驱动程序和其他相关指标。
-
Grafana仪表板提供了GPU使用情况随时间变化的可视化表示,允许您跟踪性能并相应地优化部署。
-
您可以在终端中使用
watch
命令实时监控GPU使用情况。命令watch -n 1 nvidia-smi
将每秒更新一次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环境变量
- 公开端口8000以供NIM服务器使用
- 使用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命令向在localhost:8000上运行的NIM服务器发送请求,以生成"Tell me a joke."的响应。
-
要压力测试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命令提供以下功能:
- 向本地主机的8000端口(即NVIDIA NIM服务器运行的位置)发送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()
此脚本演示了如何使用OpenAI兼容的API与NVIDIA NIM服务器交互。它表明NVIDIA NIM服务器可以为大型语言模型提供高性能推理,与不使用NIM相比可以实现高达3倍的性能提升。
压力测试NVIDIA NIM API端点
压力测试NVIDIA NIM API端点
要压力测试NVIDIA NIM API端点,我们将使用一个简单的Python脚本,利用requests
库向API发送多个并发请求。以下是它的工作原理:
-
我们定义API端点URL,在本例中是本地主机,因为我们在本地运行服务器。如果您要在远程服务器上部署,则需要使用外部IP地址并启用端口转发。
-
我们设置必要的标头,包括将
Content-Type
标头设置为application/json
。 -
我们创建有效负载,其中包括模型名称(
"model": "llama-3-8b-instruct"
),提示("prompt": "Tell me 50 jokes."
),以及max_tokens
、temperature
和stop
等其他参数。 -
我们定义一个
send_requests()
函数,该函数使用我们之前定义的URL、标头和有效负载通过requests.post()
方法发送请求。 -
我们使用多线程同时运行
send_requests()
函数的多个实例,模拟向API端点发送大量请求。 -
我们使用
watch
命令和nvidia-smi
工具实时监控GPU使用情况,这提供了GPU利用率的洞见。
输出显示,API端点能够处理大量并发请求,平均吞吐量约为每秒2,500个令牌。GPU利用率也保持相对较高,表明NVIDIA NIM能够有效利用硬件资源来提供高性能推理。
这个压力测试展示了NVIDIA NIM解决方案的可扩展性和性能,使其成为在生产环境中部署大型语言模型的一个引人注目的选择。
将NVIDIA NIM与OpenAI API客户端一起使用
将NVIDIA NIM与OpenAI API客户端一起使用
要将OpenAI API客户端与NVIDIA NIM一起使用,请按照以下步骤操作:
- 将基URL更改为您的NVIDIA NIM实例的URL。在本例中,我们在
localhost:8000
上运行它:
openai.api_base = "http://localhost:8000"
-
您不需要提供API密钥,因为NVIDIA NIM会处理身份验证。
-
将模型设置为NVIDIA NIM托管的模型,在本例中为
"meta-llama-38b-instruct"
:
model = "meta-llama-38b-instruct"
- 设置其他参数,如要生成的最大令牌数、温度和是否流式传输响应:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": "Tell me 50 different jokes"}],
max_tokens=1024,
temperature=0.7,
stream=True,
)
- 遍历流式响应并打印生成的文本:
for chunk in response:
print(chunk.choices[0].text, end="")
这种方法允许您利用NVIDIA NIM提供的性能和易部署性,同时使用熟悉的OpenAI API客户端。流式响应确保您可以实时获取生成的文本,提供响应式的用户体验。
结论
结论
在本视频中,我们探讨了如何使用NVIDIA NIM在自己的云端或本地机器上部署Lama 3 80亿指令模型。NVIDIA NIM是NVIDIA开发的一套微服务,可加速基础模型(包括语言模型和其他AI模型)的部署。
我们已经介绍了设置NVIDIA NIM环境的步骤,包括生成API密钥和运行Docker容器来部署Lama 3模型。我们还通过同时发送多个请求并监控GPU利用率和吞吐量来测试部署模型的性能。
此外,我们还展示了如何使用OpenAI API客户端与NVIDIA NIM部署的模型进行交互,演示了与OpenAI API标准的兼容性。
总的来说,NVIDIA NIM提供了一种方便高效的方式来在生产环境中部署大型语言模型。利用NVIDIA的硬件和软件栈可以带来显著的性能提升,与其他部署选项相比。如果您对探索更多部署选项感兴趣,请务必订阅频道,了解即将推出的VLLM和其他相关主题的内容。
FAQ
FAQ