目录
一、介绍NVIDIA NIM平台
二、生成DIY食谱Demo
三、小结
一、介绍NVIDIA NIM平台
NVIDIA NIM(Nvidia Inference Microservices)平台是NVIDIA推出的一个微服务套件,旨在加速生成式AI模型在云端、数据中心和工作站上的部署和使用。以下是NIM平台的一些关键特点和功能:
-
多种部署方式:
- Nvidia NIM API:以API形式开放调用,提供安全、简便的途径,助力快速开发和迭代生成式AI解决方案。
- Nvidia AI Enterprise组件:NIM是Nvidia AI Enterprise平台的重要组成部分,该平台基于VMware和Red Hat的基础软件构建。
- Nvidia NIM自托管容器:可以在工作站和配备Nvidia GPU的机器上本地部署。
-
核心功能:
- 提供行业标准的API,帮助轻松部署AI模型。
- 支持与OpenAI兼容,可以使用标准HTTP REST客户端或OpenAI客户端库进行调用。
- 提供多个端点,方便与AI模型交互,包括文本完成、文本嵌入、检索、排序等。
- 与LLM编排工具集成,如LangChain和LlamaIndex,支持构建聊天机器人、AI助手等高级应用。
-
技术基础:
- 基于强大的推理引擎,如Triton Inference Server、TensorRT、TensorRT-LLM和PyTorch。
- 支持大规模AI推理,使用最先进的基础模型和微调模型,而无需操心基础设施问题。
-
应用领域:
- NIM正迅速成为开发者首选的生成式AI模型平台,例如Google在推出Gemma 2 2B时,就同时在NIM、Hugging Face和Kaggle上进行发布。
-
Nvidia AI Enterprise中的应用:
- Nvidia AI Enterprise是一个全面的云原生软件平台,旨在加速数据科学流程,并简化生产级Copilots和其他生成式AI应用的开发与部署。
- NIM在这个平台中提供了一套易用的推理微服务,方便开发者在任何云或数据中心安全地部署基础模型。
-
自托管容器:
- 对于无法使用Nvidia AI Enterprise的开发者,NIM还提供了自托管容器镜像,支持通过Docker或Kubernetes进行部署。
- NIM抽象了模型推理的内部细节,确保高效运行。
-
优势:
- 提供强大的工具和灵活的部署选项,让生成式AI模型的开发和应用变得更加高效和便捷。
- 支持企业级的安全性、支持和稳定性,并优化了模型性能。
NVIDIA NIM平台通过提供灵活的微服务套件、与Nvidia AI Enterprise的集成以及自托管容器镜像,为开发者提供了一个强大、可扩展且安全的AI推理平台。
本文我们利用NVIDIA NIM平台提供的大模型完成一个生成DIY食谱的demo供大家学习。
二、生成DIY食谱Demo
1)环境准备:首先,我们需要安装python环境(自行搜索python安装教程)
2)导入依赖:新建一个python项目,可以起名为“nim_test.py”,再右键打开终端导入以下依赖包,供我们后续使用
pip install langchain_nvidia_ai_endpoints langchain-community langchain-text-splitters faiss-cpu gradio==3.50.0 setuptools beautifulsoup4
3)获取NVIDIA API的Key
我们需要登录NVIDIA NIM的官方网站 Try NVIDIA NIM APIs,申请我们需要用到的API,获取对应的Key,加入到我们的代码里进行调用,本例获取API的网址为:
phi-3-mini-4k | NVIDIA NIM
3)编写demo测试
# 食谱生成
from openai import OpenAI# 创建 OpenAI 客户端
client = OpenAI(base_url="https://integrate.api.nvidia.com/v1",api_key="换成自己的API KEY"
)# 获取用户输入
character_name = input("请输入食材:")# 创建聊天请求1
completion = client.chat.completions.create(model="microsoft/phi-3-mini-4k-instruct",messages=[{"role":"user","content": f"请根据这些{character_name}生成食谱,至少3道菜,包含具体做法,300字以内"}],temperature=0.2,top_p=0.7,max_tokens=1024,stream=True
)for chunk in completion:if chunk.choices[0].delta.content is not None:print(chunk.choices[0].delta.content, end="")
三、小结
此实例为简单的NVIDIA NIM平台的API的调用,大家也可以根据自己的需求在NVIDIA NIM平台上查找自己所需的API大模型,根据上述方法进行调用即可。