前提条件
- 大模型学习机预装了Llama 2-7b-chat模型与stable-diffuison-base-v2.1模型, 以及配套的开源服务框架text-generation-webui与stable-diffuison-webui,使您不需单独进行下载模型与配置环境。
- 云主机开通与如何登录网页页面参见部署文档。
- 您也可以参考视频教程(访问码:qf8m),帮助您快速学习大模型学习机的使用。
以下将向您介绍如何进行Llama 2模型文本生成任务:
1. 大语言模型加载
说明以下内容基于开源框架text-generation-webui
1.1 基础模型加载
大语言模型体积较大, 需要占用较多的内存/显存资源, 因此在刚启动服务时并未进行加载, 需要手动选择模型进行加载。
在页面上切换到Model标签页, 左侧下拉菜单展开后会显示所有存放于云主机/root/text-generation-webui/models目录下的模型. 学习机初始预装了Llama-2-7b-chat模型(huggingface格式), 您也可随时下载其他大模型并放入models目录下进行加载。
默认Model loader: Transformers能够支持huggingface的主流大模型, 在自行加载其他模型时您需要确认模型格式是否匹配。
右下角将出现模型加载样式, 直至加载成功. 耗时可能较长, 期间不要退出页面。
注意在加载预装的Llama-2-7b模型时, 如果您使用的是GPU学习机, 模型将默认以fp16半精度进行加载, 消耗13.1G显存; 如果您使用的是CPU学习机, 模型将以fp32单精度进行加载, 消耗26G内存。
因此, 如果您的机型是内存为32G或显存为16G的型号, 则会因为资源不足导致无法直接加载Llama-2-7b模型。
解决办法::
(1) 参考大模型学习机服务启停文档说明, 加载Llama 2-7b模型前先将图像生成服务关停。
(2) GPU学习机能够支持对模型进行量化, 降低模型精度的同时缩减模型大小. 您可以在Model页下方找到load-in-8bit的开关并进行勾选, 此时Llama-2-7b模型将消耗7G内存, 可以和图像生成服务中的StableDiffusion模型共存. 且8bit精度对大语言模型的生成来说影响不会特别大。
注意由于huggingface.io网站访问受限, Model标签页的Download按钮无法直接下载模型。
扩展知识:
- Huggingface:开源模型仓库网站, 大模型领域的github。
- Transformers库: 最热门的大模型训练/推理框架。
- 模型精度与需求空间计算: 模型单精度为fp32, 即一个参数占据32bit
(4字节)的空间. 可以经过GPU量化降低到 fp16 (2字节) / int8 (1字节) 等低精度. Llama-2-7b模型参数量为70亿, 那么在fp32精度下将需要 70亿x4字节 = 280亿字节的空间, 换算为26GB. 其他精度以此类推。
1.2 LoRA模型加载
由于基础大模型参数量极多, 训练需要的资源量极大, 因此基于基础大模型进行微调的小模型应运而生。LoRA技术便是其中最主流的一种。
LoRA小模型无法独立使用, 需要在加载完基础大模型后再进行加载, 对基础大模型的能力进行扩展。
学习机内没有预装LoRA小模型, 您可以在网上下载其他基于Llama-2-7b-chat的LoRA模型并放到学习机的/root/text-generation-webui/loras目录下. 在Model标签页右侧选择LoRA模型并点击Apply LoRAs进行加载。
例如您可以从此处找到进行了中文微调的LoRA模型(也有直接在基础大模型上进行训练得到的新的基础大模型, 注意区分)。
2. 大语言模型使用
2.1 对话模式
大模型需要在一定的提示词(prompt)下进行生成. 在对话模式下, 框架预设了一些背景知识以控制生成方向。可在Parameters标签页的Character标签下进行查看和修改。
需要参考下图将Parameter页Chat标签下默认的Name修改为Character’s Name: Assistant; User Name: User. 否则在进行chat对话时部分模型可能出现问题。
在Chat标签页我们可以和大模型展开对话。
注意原版Llama-2-7b-chat模型对中文支持较弱, 可以补充下载其他基于Llama-2-7b-chat的中文LoRA小模型, 或换用其他中文的基础大模型,例如电信星辰(telechat)大模型。
2.2 文本生成模式
在Default标签页我们可以利用大模型进行文本生成创作。
注意原版Llama-2-7b-chat模型对中文支持较弱, 可以补充下载其他基于Llama-2-7b-chat的中文LoRA小模型, 或换用其他中文的基础大模型,例如电信星辰(telechat)大模型。
2.3 生成方向控制
大语言模型生成方向可以在Parameters标签页的Generation标签下进行调整, 但需要您具有一定的大语言模型背景知识. 这里仅对其中部分基础参数进行介绍。
注意大模型中token的概念: 文本中最小的语义单元. 例如在英文中一个简单单词(love)可能是一个token, 一个复杂单词(transformer)可能是多个token的组合(trans + former); 在中文中一个字(爱)可能是一个token, 多个字(爱情)也可能组成一个token。
- max_new_tokens: 生成token的最大数量.
- temperature: 在生成下一个token时, 控制各个候选token被选择的概率的平滑程度.
temperature取值越大, 每个候选token的概率越相似. - top_p: 在生成下一个token时, 按候选token的概率从大到小计算累计概率,
达到p后丢弃后续的候选token, 控制候选token的数量. - top_k: 在生成下一个token时, 按候选token的概率从大到小, 只取前k个候选token, 控制候选token的数量.
- repetition_penalty: 重复惩罚, 控制生成结果中文字的重复次数.