大模型部署手记(23)Ubuntu||Windows+天工

举报
张辉 发表于 2023/11/25 19:58:53 2023/11/25
【摘要】 大模型部署手记(23)Ubuntu||Windows+天工

1.简介:

组织机构:
模型:skywork/Skywork-13B-Base-8bits

硬件环境:暗影精灵7Plus
Ubuntu版本:18.04
内存 32G
GPU显卡:Nvidia GTX 3080 Laptop (16G)

2.代码和模型下载:

cd F:\
git clone https://github.com/SkyworkAI/Skywork
cd Skywork

打开 https://huggingface.co/Skywork/Skywork-13B-Base-8bits



下载所有文件(包含子目录misc)到 F:\models\Skywork\Skywork-13B-Base-8bits




3.安装依赖

conda create -n skywork python=3.8

conda activate skywork

pip install -r requirements.txt


python
import torch
torch.__version__
torch.cuda.is_available()

再使用conda安装pytorch的GPU版本替换掉前面安装的CPU版本:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia


python
import torch
torch.__version__
torch.cuda.is_available()

pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple


pip install chardet -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install sentencepiece -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install --upgrade bitsandbytes -i https://pypi.tuna.tsinghua.edu.cn/simple



4.部署验证

cd F:\Skywork-13B
编辑 model_test.py
from modelscope import (
    AutoModelForCausalLM, AutoTokenizer, GenerationConfig, snapshot_download
)

import torch
model_dir = '\\models\\skywork\\Skywork-13B-Base-8bits'

tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True).eval()

inputs = tokenizer('陕西的省会是西安', return_tensors='pt').to(model.device)
response = model.generate(inputs.input_ids, max_length=128)
print(tokenizer.decode(response.cpu()[0], skip_special_tokens=True))
# 陕西的省会是西安,西安是我国著名的古都,在历史上有十三个朝代在此建都,所以西安又被称为“十三朝古都”。西安是我国著名的旅游城市,每年都有大量的游客来到西安旅游,西安的旅游资源非常丰富,有很多著名的旅游景点,比如秦始皇兵马俑、大雁塔、华清池、大唐芙蓉园、西安城墙、大明宫国家遗址公园、西安碑林博物馆、西安钟楼、西安鼓楼、西安半坡博物馆、西安大兴善寺、西安小雁塔


inputs = tokenizer('陕西的省会是西安,甘肃的省会是兰州,河南的省会是郑州', return_tensors='pt').to(model.device)
response = model.generate(inputs.input_ids, max_length=128)
print(tokenizer.decode(response.cpu()[0], skip_special_tokens=True))
# 陕西的省会是西安,甘肃的省会是兰州,河南的省会是郑州,湖北的省会是武汉,湖南的省会是长沙,江西的省会是南昌,安徽的省会是合肥,江苏的省会是南京,浙江的省会是杭州,福建的省会是福州,广东的省会是广州,广西的省会是南宁,海南的省会是海口,四川的省会是成都,贵州的省会是贵阳,云南的省会是昆明,西藏的省会是拉萨,青海的省会是西宁,宁夏的省会是银川,新疆的省会是乌鲁木齐。

众所周知,base模型一般就是执行文本补齐任务。


python model_test.py


难道这个天工只支持Linux?

换成ubuntu试试,修改脚本:
from modelscope import (
    AutoModelForCausalLM, AutoTokenizer, GenerationConfig, snapshot_download
)

import torch
model_dir = '/home/zhanghui/models/Skywork/Skywork-13B-Base-8bits'

tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True, load_in_8bit_fp32_cpu_offload=True)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="cuda:0", trust_remote_code=True).eval()

inputs = tokenizer('陕西的省会是西安', return_tensors='pt').to(model.device)
response = model.generate(inputs.input_ids, max_length=128)
print(tokenizer.decode(response.cpu()[0], skip_special_tokens=True))
#陕西的省会是西安,西安是我国著名的古都,在历史上有十三个朝代在此建都,所以西安又被称为“十三朝古都”。西安是我国著名的旅游城市,每年都有大量的游客来到西安旅游,西安的旅游资源
非常丰富,有很多著名的旅游景点,比如秦始皇兵马俑、大雁塔、华清池、大唐芙蓉园、西安城墙、大明宫国家遗址公园、西安碑林博物馆、西安钟楼、西安鼓楼、西安半坡博物馆、西安大兴善寺>、西安小雁塔^M


inputs = tokenizer('陕西的省会是西安,甘肃的省会是兰州,河南的省会是郑州', return_tensors='pt').to(model.device)
response = model.generate(inputs.input_ids, max_length=128)
print(tokenizer.decode(response.cpu()[0], skip_special_tokens=True))
#陕西的省会是西安,甘肃的省会是兰州,河南的省会是郑州,湖北的省会是武汉,湖南的省会是长沙,江西的省会是南昌,安徽的省会是合肥,江苏的省会是南京,浙江的省会是杭州,福建的省会
是福州,广东的省会是广州,广西的省会是南宁,海南的省会是海口,四川的省会是成都,贵州的省会是贵阳,云南的省会是昆明,西藏的省会是拉萨,青海的省会是西宁,宁夏的省会是银川,新>疆的省会是乌鲁木齐。


python model_test.py


(由于是文本补齐,所以每次生成的结果都不一样,看AI的心情。。。。)
具体结果如下:
(skywork) zhanghui@zhanghui-OMEN-by-HP-Laptop-17-ck0xxx:~/Skywork-13B$ python model_test.py
2023-11-03 03:58:46,451 - modelscope - INFO - PyTorch version 2.1.0 Found.
2023-11-03 03:58:46,451 - modelscope - INFO - Loading ast index from /home/zhanghui/.cache/modelscope/ast_indexer
2023-11-03 03:58:46,468 - modelscope - INFO - Loading done! Current index file version is 1.9.4, with md5 3a4349de7a89f5b04c2ca36a10692cdc and a total number of 945 components indexed
You are using the legacy behaviour of the <class 'transformers_modules.Skywork-13B-Base-8bits.tokenization_skywork.SkyworkTokenizer'>. This means that tokens that come after special tokens will not be properly handled.
Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:09<00:00,  2.31s/it]
陕西的省会是西安,西安古称长安、镐京,是中国四大古都之一,丝绸之路的起点,有3100多年的建城史和1100多年的国都史,先后有西周、秦、西汉、东汉、新、西晋(愍帝)、前赵、前秦、后秦、西魏、北周、隋、唐13个王朝在此建都,又为赤眉、绿林、大齐(黄巢)、大顺(李自成)等农民起义政权都城。自西汉起,西安就成为中国与
陕西的省会是西安,甘肃的省会是兰州,河南的省会是郑州,四川的省会是成都,青海的省会是西宁,湖北的省会是武汉,新疆的省会是乌鲁木齐,山西的省会是太原,西藏的省会是拉萨,内蒙古的省会是呼和浩特,黑龙江的省会是哈尔滨,吉林的省会是长春,云南的省会是昆明,贵州的省会是贵阳,宁夏的省会是银川,台湾的省会是台北,香港的省会是香港,澳门的省会是澳门。
(skywork) zhanghui@zhanghui-OMEN-by-HP-Laptop-17-ck0xxx:~/Skywork-13B$


如果不加 load_in_8bit_fp32_cpu_offload=True
会报错如下:

如果不加 device_map="cuda:0"
会报错如下:


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。