15分钟快速体验李开复团队的Yi大模型

608 阅读5分钟

李开复团队的零一万物Yi系列大模型一经推出,就在各大榜单名列前茅。本文介绍一种利用魔搭社区免费的机器快速体验Yi系列大模型的方式。

1. 前置要求

在阅读本博客之前,请确保满足以下前置要求:

  1. 注册 ModelScope 账号:在开始使用 Yi 大模型之前,你需要在 ModelScope(魔搭)平台上注册一个账号。ModelScope 是一个模型即服务共享平台,提供多种模型供用户使用和共享。
  2. 会使用Jupyter Notebook 写 "Hello World" :Jupyter Notebook 是一个交互式的 Python 编程工具,它能够让你方便地编写、运行和共享代码。在本文中,我们将使用 Jupyter Notebook 来演示 Yi 大模型的使用方法。
  3. 会使用 Python 写 "Hello World" :确保你对 Python 编程语言有一些基本的了解,并能够使用 Python 编写简单的 "Hello World" 程序。

2. 启动Yi大模型并测试

在 ModelScope 上体验 Yi 大模型的步骤如下:

  1. 登录 ModelScope 并绑定阿里云账号:访问 ModelScope 网站并使用你的账号登录。如果你还没有账号,需要先注册一个。登录后,绑定你的阿里云账号以获取免费额度。
  2. 打开 Yi 的模型地址:点击打开Yi-6B-Chat的仓库。Yi-6B-Chat · 模型库 (modelscope.cn)。示例打开的是Yi-6B-Chat的仓库地址。实际打开任意一个仓库都可以。
  3. 启动实例:在 仓库页面的右上角,点击【Notebook快速开发】选择【使用魔搭平台提供的免费实例】。

image.png

在启动页面,选择【PAI-DSW】->【GPU环境】,然后点击【启动】. 启动后,点击【查看Notebook】即可进入jupyter界面。

image.png

  1. 加载并运行

在 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=1batch=4batch=16batch=32
Yi-34B-Chat65GiB68GiB76GiB>80GiB
Yi-34B-Chat-8bits(GPTQ)35GiB37GiB46GiB58GiB
Yi-34B-Chat-4bits(AWQ)19GiB20GiB30GiB40GiB
Yi-6B-Chat12GiB13GiB15GiB18GiB
Yi-6B-Chat-8bits(GPTQ)7GiB8GiB10GiB14GiB
Yi-6B-Chat-4bits(AWQ)4GiB5GiB7GiB10GiB

魔搭提供的免费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)  # 预期是一个问候或其他形式的回应

相关资料