导读
10月30日,昆仑万维宣布开源百亿级大语言模型「天工」Skywork-13B系列,包括130亿参数的两大模型:Skywork-13B-Base模型、Skywork-13B-Math模型,它们在CEVAL, GSM8K等多个权威评测与基准测试上都展现了同等规模模型的最佳效果,其中文能力尤为出色,在中文科技、金融、政务等领域表现均高于其他开源模型。(截止至10月25日数据)
作为国内最具诚意的开源百亿大模型,「天工」Skywork-13B系列无需申请即可实现商用,授权链路极简,且无用户数、行业、公司规模限制。
「天工」Skywork-13B系列已在魔搭社区全球首发开源,魔搭也推出了模型部署相关教程,供开发者参考并快速上手,欢迎大家体验!
环境配置与安装
- python 3.8及以上版本
- pytorch 1.12及以上版本,推荐2.0及以上版本
- 建议使用CUDA 11.4及以上
本文主要演示的模型为天工13B模型-8bits量化版,在魔搭社区免费实例PAI-DSW的配置下运行(显存24G) :
第一步:点击模型右侧Notebook快速开发按钮,选择GPU环境
第二步:新建Notebook
第三步:运行示例代码,下载模型并推理
模型链接和下载
「天工」Skywork-13B系列模型现已在ModelScope社区开源,包括:
Skywork-13B-Base模型:
https://modelscope.cn/models/skywork/Skywork-13B-base/summary
Skywork-13B-Base模型-8bits量化版:
https://modelscope.cn/models/skywork/Skywork-13B-Base-8bits/summary
Skywork-13B-Math模型:
https://modelscope.cn/models/skywork/Skywork-13B-Math/summary
Skywork-13B-Math模型-8bits量化版:
https://modelscope.cn/models/skywork/Skywork-13B-Math-8bits/summary
社区支持直接下载模型的repo:
from modelscope.hub.snapshot_download import snapshot_download model_dir = snapshot_download('skywork/Skywork-13B-base', 'master')
模型推理
Skywork-13B-Base-8bits量化版推理代码:
from modelscope import ( AutoModelForCausalLM, AutoTokenizer, GenerationConfig, snapshot_download ) import torch model_dir = snapshot_download('skywork/Skywork-13B-Base-8bits', 'master') 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)) # 陕西的省会是西安,甘肃的省会是兰州,河南的省会是郑州,湖北的省会是武汉,湖南的省会是长沙,江西的省会是南昌,安徽的省会是合肥,江苏的省会是南京,浙江的省会是杭州,福建的省会是福州,广东的省会是广州,广西的省会是南宁,海南的省会是海口,四川的省会是成都,贵州的省会是贵阳,云南的省会是昆明,西藏的省会是拉萨,青海的省会是西宁,宁夏的省会是银川,新疆的省会是乌鲁木齐。
资源消耗:
Skywork-13b 模型微调和微调后推理
微调代码开源地址:
https://github.com/modelscope/swift/blob/main/examples/pytorch/llm
clone swift仓库并安装swift
# 设置pip全局镜像和安装相关的python包 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ git clone https://github.com/modelscope/swift.git cd swift pip install .[llm] # 下面的脚本需要在此目录下执行 cd examples/pytorch/llm pip install deepspeed -U pip install bitsandbytes -U
模型微调脚本 (qlora)
# Experimental environment: A10, 3090 # 16GB GPU memory PYTHONPATH=../../.. \ CUDA_VISIBLE_DEVICES=0 \ python llm_sft.py \ --model_id_or_path skywork/Skywork-13B-base \ --model_revision master \ --sft_type lora \ --tuner_backend swift \ --template_type default-generation \ --dtype bf16 \ --output_dir output \ --dataset advertise-gen-zh \ --train_dataset_sample 20000 \ --num_train_epochs 1 \ --max_length 2048 \ --quantization_bit 4 \ --bnb_4bit_comp_dtype bf16 \ --lora_rank 8 \ --lora_alpha 32 \ --lora_dropout_p 0.05 \ --lora_target_modules AUTO \ --gradient_checkpointing true \ --batch_size 1 \ --weight_decay 0.01 \ --learning_rate 1e-4 \ --gradient_accumulation_steps 16 \ --max_grad_norm 0.5 \ --warmup_ratio 0.03 \ --eval_steps 100 \ --save_steps 100 \ --save_total_limit 2 \ --logging_steps 10 \ --push_to_hub false \ --hub_model_id skywork-13b-qlora \ --hub_private_repo true \ --hub_token 'your-sdk-token' \
模型微调后的推理脚本
# Experimental environment: A10, 3090 PYTHONPATH=../../.. \ CUDA_VISIBLE_DEVICES=0 \ python llm_infer.py \ --model_id_or_path skywork/Skywork-13B-base \ --model_revision master \ --sft_type lora \ --template_type default-generation \ --dtype bf16 \ --ckpt_dir "output/skywork-13b/vx_xxx/checkpoint-xxx" \ --eval_human false \ --dataset advertise-gen-zh \ --max_length 2048 \ --quantization_bit 4 \ --bnb_4bit_comp_dtype bf16 \ --max_new_tokens 2048 \ --temperature 0.9 \ --top_k 20 \ --top_p 0.9 \ --repetition_penalty 1.05 \ --do_sample true \ --merge_lora_and_save false \
微调的可视化结果
训练损失:
评估损失
训练后生成样例
[PROMPT]Task: Generating advertisements based on keywords. Keywords: 上衣,牛仔布,白色,简约,刺绣,外套,破洞 Advertisements: [OUTPUT]牛仔外套是春季必备的单品,这款牛仔外套采用经典的白色,简约大方又百搭。前片的立体贴布刺绣,打破了纯色外套的单调感。衣袖上的破洞设计,增添了几分街头感。</s> [PROMPT]Task: Generating advertisements based on keywords. Keywords: 上衣,嘻哈,卡通,印花,撞色,卫衣,连帽 Advertisements: [OUTPUT]一款个性十足的连帽卫衣,经典的嘻哈风设计风格,加上卡通的印花装饰,为整件衣服带来了更多的时尚感。撞色的领口和袖口设计,使其更加有特色,更具视觉效果。</s> [PROMPT]Task: Generating advertisements based on keywords. Keywords: 裙,弧形,高腰,半身裙,不规则,收腰 Advertisements: [OUTPUT]半身裙的版型是比较修身的,能凸显女性纤细的腰部曲线,同时对大腿的包容度也比较高。高腰的设计可以将腰线拉高,让身材比例更加匀称。不规则的裙摆,更有层次感,还能拉长下半身的比例。裙摆下方还有弧形开叉,修饰腿部的曲线,走路更方便。</s>
资源消耗:
13G显存
点击直达Skywork-13b 开源链接
https://modelscope.cn/models/skywork/Skywork-13B-base/summary