Hugging Face入门 (AutoClass)
Hugging Face入门 (AutoClass)
Transformers 提供了 AutoTokenizer 和 AutoModel 这两个类来方便加载预训练模型及其对应的分词器。
AutoTokenizer
AutoTokenizer 是一个用于文本预处理的分词器,它负责将输入文本转换为数字数组,以便输入模型进行处理。分词器会按照一定的规则进行分词,包括如何切分单词以及以何种级别进行切分。您可以根据模型的名称来实例化一个特定的分词器。为了确保分词的一致性,我们建议使用与模型预训练时相同的分词器。
更多关于分词的详细知识,请参考 autoclass。
AutoModel
与 AutoTokenizer 类似,AutoModel 提供了一种简单而统一的方式来加载预训练模型。您可以像加载 AutoTokenizer 一样加载 AutoModel。唯一的区别在于选择适用于您任务的正确 AutoModel。您可以在官方文档中找到所需模型的名称。
更多关于 AutoModel 的信息,请参考 automodel。
ChatGLM-6B 模型
ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型。您可以在 chatglm-6b 找到关于 ChatGLM-6B 的更多信息。
使用AutoClass加载ChatGLM-6B,实现中文问答
为了实现中文问答,首先需要安装 transformers 和 sentencepiece 库。
1 | # 安装 transformers 和 sentencepiece 库 |
AutoTokenizer生成tokenizer,以便输入模型进行文本处理
使用 AutoTokenizer.from_pretrained
方法加载 ChatGLM-6B 模型。
用tokenizer将中文输入,转换为数字数组。
1 | from transformers import AutoTokenizer |
AutoModel加载模型,使用tokenizer进行本文分析并输出
使模型在推理阶段获得更佳的性能,达到以较快的速度,得到更准确的输出:
- .cuda(): 可以将模型加载到 GPU 上,利用GPU进行加速。
- .half(): 将模型的数据类型从float32改为float16,来减小模型大小并加速计算。
- model.eval(): 将模型设置为eval模式,下会关闭dropout等随机操作,可以改善推理效果。
1 | from transformers import AutoModel |
1 | prompt = "什么是量子化?" |
通过以上步骤,您可以使用 ChatGLM-6B 模型实现中文问答,并获得更快速和准确的输出。
总结
Transformers AutoClass 提供了一种为自然语言处理任务加载分词器和模型的便捷方法。
使用AutoTokenizer和AutoModel,可以轻松地预处理文本并加载相应的模型以执行各种任务。
ChatGLM-6B,作为一个强大的语言模型的例子,支持双语问答,可以使用AutoClass加载。
按照给定的步骤,您可以有效地使用ChatGLM-6B实现中文问答。