生成式 AI 游乐场:在最新的 Intel® GPU 上使用 Camel-5b 和 Open LLaMA 3B 的 LLM





5.00/5 (1投票)
本文探讨了大型语言模型(LLMs)在聊天机器人、代码生成和调试等各种应用中的使用。
本文最初发布于 Medium*。
2023年10月15日 — 在过去一年中,大型语言模型(LLMs)以其在聊天机器人、代码生成、调试、检索增强生成(RAG)、指令遵循等众多应用中的表现,席卷了整个世界。在本文中,我将展示在最新的 Intel® Data Center GPU Max Series 1100 上的LLM推理。
我使用的两个LLM模型是:
- Camel-5b:Camel-5b是基于Palmyra-Base的基线架构衍生而来,是一个拥有50亿参数的LLM模型,在70,000条指令-响应记录上进行了训练。Camel-5b模型与其他LLM的区别在于它能够接受复杂的指令并生成上下文相关的准确响应。
- Open LLaMA 3B v2:这是一个开源的、拥有30亿参数的Meta* LLaMA模型的复现版本,在多种数据上进行了训练。该模型最大的明显优势在于它建立在Meta LLaMA 2成功的基础上,并且拥有宽松的许可,可以供更广泛的用户使用。
关于这些特定模型的一个说明——它们没有针对聊天进行微调,因此您在使用这些模型时,响应效果可能会有所不同。
Intel GPU 硬件
我用于推理测试的特定GPU是 Intel Data Center GPU Max Series 1100,它拥有48 GB内存、56个Xe核心和300W的热设计功耗。在命令行中,我可以通过运行以下命令来首先验证我是否确实拥有预期的GPU:
clinfo -l
我收到的输出显示,当前节点上有四个 Intel GPU 可供我使用。
Platform #0: Intel(R) OpenCL Graphics
+-- Device #0: Intel(R) Data Center GPU Max 1100
+-- Device #1: Intel(R) Data Center GPU Max 1100
+-- Device #2: Intel(R) Data Center GPU Max 1100
`-- Device #3: Intel(R) Data Center GPU Max 1100
与 nvidia-smi
函数类似,您可以在命令行中运行 xpu-smi
,并选择一些选项来获取您想要的 GPU 使用统计信息。
xpu-smi dump -d 0 -m 0,5,18
结果是每秒打印一次设备 0 的重要 GPU 使用情况。
getpwuid error: Success
Timestamp, DeviceId, GPU Utilization (%), GPU Memory Utilization (%), GPU Memory Used (MiB)
13:34:51.000, 0, 0.02, 0.05, 28.75
13:34:52.000, 0, 0.00, 0.05, 28.75
13:34:53.000, 0, 0.00, 0.05, 28.75
13:34:54.000, 0, 0.00, 0.05, 28.75
运行LLM示例
我的同事 Rahul Nair 编写了一个LLM推理Jupyter* Notebook,它直接托管在Intel® Developer Cloud上。它提供了使用我之前概述的任一模型的选项。以下是您可以开始的步骤:
- 访问 Intel Developer Cloud。
- 注册为标准用户。
- 登录后,转到 培训和研讨会部分。
- 选择 GenAI Launch Jupyter Notebook。您可以在那里找到LLM推理Notebook并运行它。
图2显示了LLM Notebook内的用户界面。您可以选择模型,选择是否带上下文进行交互,然后选择 **Temperature(温度)**、**Top P(核采样)**、**Top K(Top-K过滤)**、**Num Beams(束搜索数量)** 和 **Rep Penalty(重复惩罚)** 等参数。它们的定义如下:
- Temperature(温度):用于控制玻尔兹曼分布中随机性的温度。值越高,随机性越大;值越低,生成结果越确定。
- Top P(核采样):用于核采样(nucleus sampling)的累积分布函数(CDF)阈值。它有助于控制随机性和多样性之间的权衡。
- Top K(Top-K过滤):用于Top-K过滤的最高概率词汇令牌数量。
- Num Beams(束搜索数量):用于束搜索(beam search)的束的数量。它控制搜索的宽度。
- Repetition Penalty(重复惩罚):应用于重复令牌的惩罚。
为了加速在Intel GPU上的推理,使用了 Intel® Extension for PyTorch*。其中两个关键函数是:
ipex.optimize_transformers(self.model, dtype=self.torch_dtype)
和
ipex.optimize(self.model, dtype=self.torch_dtype)
其中 self.model
是已加载的LLM模型,self.torch_dtype
是数据类型,为了在Intel GPU上加速性能,应设置为 torch.bfloat16
。您可以在 GitHub* 仓库 中了解更多关于Intel Extension for PyTorch的信息。
在模型加载到内存后,我能够在几秒钟内生成这些模型的响应。正如我提到的,由于这些模型没有针对聊天进行微调,您在使用时,模型的响应效果可能会有所不同。
您可以联系我:
- DevHub Discord* 服务器(用户名:bconsolvo)
- LinkedIn*
- X(原 Twitter*)
使用大型语言模型的免责声明
请注意,虽然Camel-5b和OpenLLaMA 3b v2等LLM是强大的文本生成工具,但它们有时可能会产生意外、有偏见或与给定提示不一致的结果。建议仔细审查生成的文本,并考虑您使用这些模型的上下文和应用。
使用这些模型还必须遵守许可协议,并符合AI的道德准则和最佳实践。如果您有任何疑虑或在使用模型时遇到问题,请参阅先前链接中提供的相应模型卡片和文档。