零基础Windows部署YuanChat和Yuan2.0-2B大模型

发布时间:2024年01月23日

1. Yuan2.0

1.1. 项目简介

Yuan2.0(源2.0是浪潮信息发布的新一代基础语言大模型。我们开源了全部的3个模型Yuan2.0-102B、Yuan2.0-51B和Yuan2.0-2B。并且提供了预训练、微调、推理服务的相关脚本,以供研发人员做进一步的开发。Yuan2.0是在Yuan1.0的基础上,利用更多样的高质量预训练数据和指令微调数据集,令模型在语义、数学、推理、代码、知识等不同方面具备更强的理解能力。

1.2. Yuan2-2B 模型介绍

近期,我们对Yuan2.0-2B模型进行了优化升级,在微调数据集构成上进行了整体和局部的配比调优,均衡模型在各领域的性能表现。从评测结果上来看,新版本的Yuan2.0-2B模型在推理、代码、对话等领域,均取得了显著的成果,其中在HumanEval数据集上的评测准确率由54.9%提升至61.5%,在GSM8K数据集上的评测准确率由66.6%提升至70.2%。

1.3. YuanChat 介绍

YuanChat(源Chat 是Yuan-2.0 项目的一部分, 作为Yuan2.0的一个客户端应用. YuanChat 提供了一种简单的交互方式,可以让用户很轻松的使用 Yuan2.0, 用户可以很方便的进行测试以及使用。

2. 配置要求

  • 内存: 16GB+
  • 系统: windows10/11

3. 环境准备

3.1. 安装Docker Desktop

首先,请在系统中安装DockerDesktop,完成安装后,启动Docker Desktop,启动成功后,会看到如下页面?

3.2. 下载模型

  • 打开Huggingface上的Yuan-2B模型页面,进入到模型文件列表,依次下载模型文件
  • 【注】如果无法访问huggingface,可以通过魔搭社区wisemodel等平台下载模型

  • 新建一个文件夹(本示例中取名为Yuan2-2B-hf),将下载好的文件放到此文件夹

中。?

注意: 如果你的环境中不存在GPU或你想在CPU模式下运行,需要修改模型文件config.jsonyuan_hf_model.py

1. config.json

将 ‘user_flash_attention ’的值改为 ‘false’

2. yuan_hf_model.py

1)注释掉 yuan_hf_model.py中第35、36行;

2)修改yuan_hf_model.py中第271行代码为:

inference_hidden_states_memory = torch.empty (bsz, 2, hidden_states.shape[2], dtype=hidden_states.dtype)

另外,我们同时提供了已经修改好的文件,分别为config_cpu.json和yuan_hf_model_cpu.py,可以将这两个文件分别重命名为config.json和yuan_hf_model.py,替换原有的两个文件即可。

3.3. 拉取镜像

我们封装了一个可直接运行Yuan Model推理和YuanChat的镜像,可已通过如下命令进行拉取。

到此,我们的所有准备工作已经完成,可以开始运行测试了。

4. 运行测试

4.1 启动服务

# powder shell

# 进入到模型文件所在目录

cd f:\yuandemo

# 启动模型+Chat服务

docker run -d --name all-in-one -p 5050:5050 -v f:\yuandemo\Yuan2-2B-hf:/models yuanmodel/yuanchat:all-cpu

4.2 检查服务

打开Docker Desktop的Containers菜单,可以看到一个名为all-in-one的容器,查看此容器的详情?

?当详情页出现如下输出时,表示服务启动完毕?

4.3 测试服务

用浏览器打开地址:http://localhost:5050,会看到如下页面

到此,恭喜你已完成部署,现在可以体验和测试Yuan大模型了!

5. FAQ

1. Docker 虚拟内存不够,导致服务启动失败

如果你是初次安装的Docker Desktop,或没有配置过.wslconfig文件,在启动服务时,会出现如下错误:

2024-01-05 17:14:04 You are using the default legacy behaviour of the <class 'transformers.models.llama.tokenization_llama.LlamaTokenizer'>. This is expected, and simply means that the `legacy` (previous) behavior will be used so nothing changes for you. If you want to use the new behaviour, set `legacy=False`. This should only be set if you understand what it means, and thoroughly read the reason why this was added as explained in https://github.com/huggingface/transformers/pull/24565

2024-01-05 17:14:04 Creat tokenizer...

2024-01-05 17:14:04 Creat model...

Loading checkpoint shards:?? 0%|????????? | 0/3 [00:00<?, ?it/s]start.sh: line 4:???? 8 Killed????????????????? python -u run_text_generation_server_hf.py

.wslconfig文件是wsl的默认配置文件,可以通过在.wslconfig文件中设置参数,来改变wsl的默认值

解决方案:

Windows系统

1. win+R,并输入%UserProfile%,点击回车

2. Windows的DockerDesktop默认是运行在wsl2模式下,所以我们要新建配置文件来修改wsl的默认值。

在打开的目录中新建.wslconfig文件,用记事本打开,并输入如下内容

其中“memory”是最大虚拟内存限制,“processors”是最大虚拟CPU数量,“swap”为0表示禁止使用交换内存

[wsl2]
memory=16GB
processors=4
swap=0

3. 重启wsl

修改完wsl配置文件后,需要重新启动wsl才能使配置文件生效。打开Powershell,并执行如下命令

wsl --shutdown

4. 重新启动Docker Desktop

在重启完wsl后,Docker Desktop会退出,现在我们需要重新打开Docker Desktop

5. 重启服务

打开Docker Desktop后,在Container菜单中找到all-in-one容器,点击重启按钮

文章来源:https://blog.csdn.net/2401_82700030/article/details/135752096
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。