65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2023 年 12 月 13 日

CPOL

4分钟阅读

viewsIcon

4307

本文探讨了大型语言模型(LLMs)在聊天机器人、代码生成和调试等各种应用中的使用。

本文最初发布于 Medium*

图 1. 图片来源:Brett Jordan on Unsplash

2023年10月15日 — 在过去一年中,大型语言模型(LLMs)以其在聊天机器人、代码生成、调试、检索增强生成(RAG)、指令遵循等众多应用中的表现,席卷了整个世界。在本文中,我将展示在最新的 Intel® Data Center GPU Max Series 1100 上的LLM推理。

我使用的两个LLM模型是: 

  1. Camel-5b:Camel-5b是基于Palmyra-Base的基线架构衍生而来,是一个拥有50亿参数的LLM模型,在70,000条指令-响应记录上进行了训练。Camel-5b模型与其他LLM的区别在于它能够接受复杂的指令并生成上下文相关的准确响应。
  2. 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上。它提供了使用我之前概述的任一模型的选项。以下是您可以开始的步骤:

  1. 访问 Intel Developer Cloud
  2. 注册为标准用户。
  3. 登录后,转到 培训和研讨会部分
  4. 选择 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(重复惩罚):应用于重复令牌的惩罚。

图2. Jupyter Notebook环境中的一个小型用户界面,允许在行内进行文本提示和响应。

为了加速在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的信息。

在模型加载到内存后,我能够在几秒钟内生成这些模型的响应。正如我提到的,由于这些模型没有针对聊天进行微调,您在使用时,模型的响应效果可能会有所不同。

您可以联系我:

使用大型语言模型的免责声明

请注意,虽然Camel-5b和OpenLLaMA 3b v2等LLM是强大的文本生成工具,但它们有时可能会产生意外、有偏见或与给定提示不一致的结果。建议仔细审查生成的文本,并考虑您使用这些模型的上下文和应用。

使用这些模型还必须遵守许可协议,并符合AI的道德准则和最佳实践。如果您有任何疑虑或在使用模型时遇到问题,请参阅先前链接中提供的相应模型卡片和文档。

© . All rights reserved.