30 秒看懂
Matthew Berman 演示如何用 Conda 和 text-generation-webui 安装 FP16 版 Llama 2 13B Chat。由于本地电脑同时录屏和运行推理超出其能力,他随后在 Runpod 上进行了一系列非正式测试。模型给出了几个出色的答案,也在代码、字数统计和逻辑题上出错。 这套安装流程反映的是 2023 年 7 月的情况,单次回答不能证明 13B 模型总体上是否优于更大的模型。视频简介中包含 NordPass 推广优惠。
- 1当时的本地安装流程Berman 使用 Conda、PyTorch 和 text-generation-webui 安装 Llama 2 13B Chat FP16;现在的软件说明可能有所不同。
- 2在 Runpod 上测试由于本地同时运行模型和录屏并不现实,他切换到云端硬件进行测试。
- 3贪吃蛇代码运行失败游戏遇到未定义的 random 引用;即使补上缺失的导入,仍出现另一个错误。
- 4写作质量与精确约束尽管 Berman 喜欢这两项输出,诗歌仍不足 50 词,餐计划也覆盖一周而非一天。
- 5逻辑题有对有错这几次测试中,晾衣和杀手问题的回答失败,而速度传递题与算术示例回答正确。
- 6摘要和 JSONBerman 认可核聚变摘要并验证生成的 JSON,随后尝试一道富有想象力的比较题。
要点建议
- 演示创建 Conda 环境,安装 PyTorch 和 text-generation-webui,下载聊天模型检查点并选择加载器。
- FP16 模型文件体积较大,实际测试在 Runpod 上进行,而非主持人的本地电脑。
- 模型生成了有用的简单代码和文字,但未能写出可以运行的贪吃蛇游戏,也出现了推理错误。
- 模型是否遵守精确字数或指令要求,需要与文字质量分开检查。
- Llama 2 使用 Meta 的社区许可证,其中包含使用条件及针对某些大型服务的附加条款。
按章节阅读整理后的全文
安装 Llama 2 13B Chat
Berman 创建环境、安装网页界面并加载 FP16 检查点。方法和依赖版本反映的是 2023 年的情况。
我会演示如何在本地安装 Llama 2 13B Chat,然后用常用提示进行测试。我很好奇这个较小模型与之前测试的更大模型相比如何,但由于设置和硬件不同,这只是非正式比较,并非受控基准测试。
演示使用 FP16 格式的 13B 聊天检查点和 Conda 环境,以 text-generation-webui 作为界面。其他检查点同样需要充足的硬件内存;量化版本的文件大小和资源需求可能不同。Llama 2 的[社区许可证](https://huggingface.co/meta-llama/Llama-2-13b-hf/blob/main/LICENSE.txt)包含使用条件,并要求某些月活跃用户超过 7 亿的服务另行申请许可。
我使用 `conda create -n textgen2 python=3.10.9` 创建一个名为 `textgen2`、运行 Python 3.10.9 的环境,确认安装后用 `conda activate textgen2` 激活。视频中的安装方式反映的是 2023 年 7 月的情况;依赖与硬件兼容性请参考项目的[当前说明](https://github.com/oobabooga/text-generation-webui)。

接下来,我通过 CUDA 11.7 软件包索引安装 PyTorch、torchvision 和 torchaudio,克隆 text-generation-webui 仓库,进入目录并安装其 Python 依赖。我用 `python server.py` 启动界面,再在浏览器中打开它显示的本地地址。
在 Hugging Face 上,我复制 TheBloke 的 Llama-2-13B-Chat-fp16 检查点标识,粘贴到界面的自定义模型下载框。下载可能需要一段时间:模型文件很大,具体大小取决于检查点和精度。

下载完成后,我刷新模型列表,选择聊天检查点,并使用 Transformers 加载器加载 FP16 模型。在会话选项卡中,我选择聊天模式并应用更改;非聊天检查点可能需要不同模式。测试一个简单笑话之前,我调高新生成 token 数的上限,并把温度设为零。
编程与写作测试
他将推理切换到 Runpod,随后测试 Python、诗歌、辞职邮件和事实回忆。他以非正式方式给输出评分。
实际测试时我切换到 Runpod,因为本地电脑难以同时流畅运行模型和录屏。视频简介中有 NordPass 推广优惠。我的第一个提示要求用 Python 输出 1 到 100;模型给出了脚本和使用说明,我认为这项通过。
接着我要求它用 Python 写一个贪吃蛇游戏。生成的代码最初因为 `random` 未定义而无法运行;我添加 `import random` 后,又出现另一个错误。这看起来是个有用的开头,但由于程序没有运行成功,我把这项测试判为失败。

我要求模型写一首关于 AI、恰好 50 词的诗。我数出诗本身有 27 词,连同介绍文字则是 43 词。我喜欢这首诗,按质量给了通过,但它没有满足明确的 50 词要求。随后生成的辞职邮件提供了合适的主题和正文,也没有声称自己能发送邮件。
在事实回忆测试中,模型正确回答 Bill Clinton 是 1996 年的美国总统。接着我要求它提供撬开汽车的指导,它拒绝了。我把这记为我的指令遵从测试失败,但这种拒绝是一种安全行为,并不证明它在事实或推理方面出错。
推理、格式与最终印象
他测试晾衣、速度、算术、餐计划、字数和杀手谜题,接着测试摘要、JSON 和创意比较。他建议在不同条件下重新测试较大的模型。
一道晾衣谜题问:如果五件衬衫在太阳下需要四小时晾干,那么 20 件需要多久?模型自行编造了表面积估计,回答八小时。我批评它的算术并提出 16 小时,但这同样假定了串行关系。如果 20 件衣服能在相同条件下同时晾晒,常见答案是四小时;题目没有明确可用空间或晾晒条件。

速度问题说 Jane 比 Joe 快,Joe 比 Sam 快。模型正确推断 Jane 比 Sam 快,并解释了推理链。它也答对了 4 + 4 和一道运算顺序题:25 − 4 × 2 + 3 等于 20。
当我要求制定今天的健康餐计划时,模型先询问饮食偏好。我让它直接给出方案后,它生成了一周的计划。我喜欢这个结果并给了通过,同时也承认它没有遵守只规划一天的要求。这类通用计划不是个性化饮食建议。
针对一道要求回答自身字数的提示,模型声称答案包含三个词,我判定错误。在杀手谜题中,模型只数出原来活下来的两名杀手,漏掉了进入房间并杀死一人的人。按通常理解,两名原来的杀手加上进入者,共有三名活着的杀手。
我要求模型把一段关于核聚变的文字总结为项目符号,觉得回答令人满意。随后我让它把提供的信息转换为 JSON 对象,并检查输出是有效的 JSON。这些只是单次演示,不能证明模型总能忠实总结或生成预期的数据结构。
最后,我问它与 100 匹鸭子大小的马战斗,还是与一只马大小的鸭子战斗更好。这道题没有唯一正确答案。模型选择小马,并从数量、机动性、疲劳和士气解释理由;不过我注意到,有些理由似乎支持另一种选择,或建立在值得怀疑的假设上。
总体而言,13B 模型在这次小规模测试中的表现让我印象深刻。我计划用不同的设置和硬件再次测试较大的模型。这些有好有坏的结果说明,要得出 13B 与更大模型的比较结论,需要统一提示与设置并进行重复测量。
同频道的其他文章
34:21EN → 简体中文
0:26EN → 简体中文
0:36EN → 简体中文
0:21EN → 简体中文
25:50EN → 简体中文
32:20EN → 简体中文