李开复团队的零一万物Yi系列大模型一经推出,就在各大榜单名列前茅。本文介绍一种利用魔搭社区免费的机器快速体验Yi系列大模型的方式。
1. 前置要求
在阅读本博客之前,请确保满足以下前置要求:
- 注册 ModelScope 账号:在开始使用 Yi 大模型之前,你需要在 ModelScope(魔搭)平台上注册一个账号。ModelScope 是一个模型即服务共享平台,提供多种模型供用户使用和共享。
- 会使用Jupyter Notebook 写 "Hello World" :Jupyter Notebook 是一个交互式的 Python 编程工具,它能够让你方便地编写、运行和共享代码。在本文中,我们将使用 Jupyter Notebook 来演示 Yi 大模型的使用方法。
- 会使用 Python 写 "Hello World" :确保你对 Python 编程语言有一些基本的了解,并能够使用 Python 编写简单的 "Hello World" 程序。
2. 启动Yi大模型并测试
在 ModelScope 上体验 Yi 大模型的步骤如下:
- 登录 ModelScope 并绑定阿里云账号:访问 ModelScope 网站并使用你的账号登录。如果你还没有账号,需要先注册一个。登录后,绑定你的阿里云账号以获取免费额度。
- 打开 Yi 的模型地址:点击打开Yi-6B-Chat的仓库。Yi-6B-Chat · 模型库 (modelscope.cn)。示例打开的是Yi-6B-Chat的仓库地址。实际打开任意一个仓库都可以。
- 启动实例:在 仓库页面的右上角,点击【Notebook快速开发】选择【使用魔搭平台提供的免费实例】。
在启动页面,选择【PAI-DSW】->【GPU环境】,然后点击【启动】. 启动后,点击【查看Notebook】即可进入jupyter界面。
- 加载并运行
在 Notebook 中,新建一个代码块来下载和加载模型,然后进行初始对话。整个过程大约需要3到10分钟。具体代码如下所示:
from modelscope import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
tokenizer = AutoTokenizer.from_pretrained("01ai/Yi-6B-Chat", revision='master', trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("01ai/Yi-6B-Chat", revision='master', device_map="auto", trust_remote_code=True).eval()
# Prompt content: "hi"
messages = [
{"role": "user", "content": "hi"}
]
input_ids = tokenizer.apply_chat_template(conversation=messages, tokenize=True, add_generation_prompt=True, return_tensors='pt')
output_ids = model.generate(input_ids.to('cuda'))
response = tokenizer.decode(output_ids[0][input_ids.shape[1]:], skip_special_tokens=True)
# Model response: "Hello! How can I assist you today?"
print(response)
后续可以进行其他测试,创建代码块,并修改输入信息,运行后,即可看到Yi的输出。
# Prompt content: "hi"
messages = [
{"role": "user", "content": "生蚝煮熟后是什么"}
]
input_ids = tokenizer.apply_chat_template(conversation=messages, tokenize=True, add_generation_prompt=True, return_tensors='pt')
output_ids = model.generate(input_ids.to('cuda'))
response = tokenizer.decode(output_ids[0][input_ids.shape[1]:], skip_special_tokens=True)
print(response)
模型输出如下:
生蚝(oyster)煮熟后会发生一系列的变化,包括蛋白质变性、细菌杀灭、维生素流失等。以下是生蚝煮熟后的主要变化:
1. 蛋白质变性:生蚝中的蛋白质在高温煮熟过程中会发生凝固,使得生蚝肉变得更有嚼劲。
2. 细菌杀灭:煮熟可以有效地杀灭生蚝中的致病菌和腐败菌,确保食品安全。
3. 维生素流失:生蚝中的某些维生素,如维生素B1、B2和叶酸,在高温煮熟过程中可能会流失。
4. 风味融合:生蚝煮熟后,其独特的鲜味和口感会与汤汁和其他配料更好地融合,提升菜品的整体风味。
5. 外观变化:生蚝煮熟后,其原本半透明的外壳会变成棕褐色,而肉质则会变成棕色或深棕色。
6. 烹饪方式多样化:生蚝煮熟后可以用来制作各种菜肴,如烤生蚝、煎生蚝、煮生蚝汤等。
总的来说,生蚝煮熟后虽然失去了部分鲜味和营养,但可以更好地保持其形状,提高食用安全性,并增加烹饪的多样性。
注意:运行完成后,及时关闭实例,避免消耗过多免费额度
3. 部署说明
示例中使用的是Yi-6B-Chat模型,一个包含60亿参数的对话型AI。除了这个模型,还有多种其他选项可供选择:
| batch=1 | batch=4 | batch=16 | batch=32 | |
|---|---|---|---|---|
| Yi-34B-Chat | 65GiB | 68GiB | 76GiB | >80GiB |
| Yi-34B-Chat-8bits(GPTQ) | 35GiB | 37GiB | 46GiB | 58GiB |
| Yi-34B-Chat-4bits(AWQ) | 19GiB | 20GiB | 30GiB | 40GiB |
| Yi-6B-Chat | 12GiB | 13GiB | 15GiB | 18GiB |
| Yi-6B-Chat-8bits(GPTQ) | 7GiB | 8GiB | 10GiB | 14GiB |
| Yi-6B-Chat-4bits(AWQ) | 4GiB | 5GiB | 7GiB | 10GiB |
魔搭提供的免费A10 GPU具有24G显存,可以支持部署最大为Yi-34B-Chat-4bits(AWQ)版本的模型。 但是使用modelsocpe或transformer库推理时,会出现oom现象。此时可以采用llama.cpp或vllm进行推理,他们的效率更高,占用的显存更少。
如需修改部署的模型,可以直接修改模型名称:
# 从 modelscope 导入必要的库
from modelscope import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
# 加载 Yi-34B-Chat-4bits 模型的分词器
# 用于处理输入文本和解码模型输出
tokenizer = AutoTokenizer.from_pretrained("01ai/Yi-34B-Chat-4bits", revision='master', trust_remote_code=True)
# 加载实际的 Yi-34B-Chat-4bits 模型,用于因果语言建模
# 将其设置为评估模式,并允许自动设备放置(CPU/GPU)
model = AutoModelForCausalLM.from_pretrained("01ai/Yi-34B-Chat-4bits", revision='master', device_map="auto", trust_remote_code=True).eval()
# 定义用户的消息内容
# 在本例中,用户简单地说 "hi"
messages = [
{"role": "user", "content": "hi"}
]
# 使用分词器处理对话
input_ids = tokenizer.apply_chat_template(conversation=messages, tokenize=True, add_generation_prompt=True, return_tensors='pt')
# 根据用户输入生成模型的响应
output_ids = model.generate(input_ids.to('cuda'))
# 将生成的响应解码回字符串,排除任何特殊令牌
response = tokenizer.decode(output_ids[0][input_ids.shape[1]:], skip_special_tokens=True)
# 打印模型对用户 "hi" 的响应
print(response) # 预期是一个问候或其他形式的回应