引言
浪潮信息发布源2.0基础大模型,参数量包括1026亿、518亿、21亿三个大模型,从源2.0的论文上可以看到,源2.0不仅在数理逻辑、数学计算、代码生成能力上,再次超强进化,还在算法、数据、算力方面,提出了三项创新。
添加图片注释,不超过 140 字(可选)
算法方面,源2.0提出并采用了一种新型的注意力算法结构LFA(局部注意力过滤增强机制,Localized Filtering-based Attention),对于自然语言的关联语义理解更准确。
数据方面,源2.0使用中英文书籍、百科、论文等高质量中英文资料,降低了互联网语料内容占比,增加了高质量的专业数据集和逻辑推理数据集。
算力方面,源2.0采用了非均匀流水并行和优化器参数并行的分布式训练方法,显著降低了大模型对芯片间P2P带宽的需求。
GitHub开源地址:
ModelScope模型开源地址:
ModelScope创空间体验地址:modelscope.cn/studios/Yua…
小模型有大能量
在魔搭创空间,CPU就可以运行host Yuan2-2B-Janus-Chat模型。
Yuan2-2B-Janus-Chat模型虽然尺寸小,但是已经具备比较好的文学创作能力:
添加图片注释,不超过 140 字(可选)
常识问答能力:
添加图片注释,不超过 140 字(可选)
数学计算能力:
添加图片注释,不超过 140 字(可选)
代码能力:
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
模型推理
在ModelScope社区的免费算力上可以实现Yuan2-2B-Janus-hf模型的推理
模型链接:
Yuan2-2B-Janus-hf:
推理代码:
import torch
import os
from modelscope import AutoModelForCausalLM, AutoTokenizer
print("Creat tokenizer...")
tokenizer = AutoTokenizer.from_pretrained('YuanLLM/Yuan2-2B-Janus-hf', add_eos_token=False, add_bos_token=False, eos_token='<eod>')
tokenizer.add_tokens(['<sep>', '<pad>', '<mask>', '<predict>', '<FIM_SUFFIX>', '<FIM_PREFIX>', '<FIM_MIDDLE>','<commit_before>','<commit_msg>','<commit_after>','<jupyter_start>','<jupyter_text>','<jupyter_code>','<jupyter_output>','<empty_output>'], special_tokens=True)
print("Creat model...")
model = AutoModelForCausalLM.from_pretrained('YuanLLM/Yuan2-2B-Janus-hf', device_map='auto', torch_dtype=torch.bfloat16, trust_remote_code=True)
inputs = tokenizer("请问目前最先进的机器学习算法有哪些?", return_tensors="pt")["input_ids"].to("cuda:0")
outputs = model.generate(inputs,do_sample=False,max_length=100)
print(tokenizer.decode(outputs[0]))
显存占用:
添加图片注释,不超过 140 字(可选)
模型微调
使用SWIFT对 Yuan2-2B-Janus-Chat 进行微调, 解决分类问题。
我们使用的数据集hc3-zh包含了给定问题的人类-ChatGPT回答文本对, 通过这个数据集,可以训练一个区分对应回答是来自人类还是ChatGPT的分类模型。
代码开源地址:
微调脚本:
# Experimental environment: A10
# 7GB GPU memory
CUDA_VISIBLE_DEVICES=0 \
swift sft \
--model_type yuan2-janus-2b-instruct \
--sft_type lora \
--template_type AUTO \
--dataset hc3-zh \
--train_dataset_sample 20000 \
--eval_steps 100 \
--output_dir output \
--num_train_epochs 1 \
--max_length 2048 \
--learning_rate 1e-4 \
--use_flash_attn false \
--save_only_model true \
--lora_target_modules ALL \
训练过程也支持本地数据集,需要指定如下参数:
--custom_train_dataset_path xxx.jsonl \
--custom_val_dataset_path yyy.jsonl \
自定义数据集的格式可以参考:
微调后推理脚本: (这里的ckpt_dir需要修改为训练生成的checkpoint文件夹)
# Experimental environment: A10
CUDA_VISIBLE_DEVICES=0 \
swift infer \
--ckpt_dir "output/yuan2-2b-janus-instruct/vx_xxx/checkpoint-xxx" \
--load_dataset_config true \
--max_length 2048 \
--use_flash_attn false \
--max_new_tokens 2048 \
--do_sample false \
--merge_lora_and_save false \
微调后生成样例:
[PROMPT]Classification Task: Are the following responses from a human or from ChatGPT?
Question: 健身房器械训练一小时消耗多少卡路里?
Answer: 健身房器械训练一小时消耗的卡路里数量可能因人而异。这取决于许多因素,包括您的体重、强度、持续时间以及健身房器械本身。
一般来说,使用健身房器械训练时,您可以期望每小时消耗约 400-600 卡路里。但是,如果您的训练强度很高或者体重很大,那么您可能会消耗更多的卡路里。反之,如果您的训练强度较低或者体重较小,您可能会消耗较少的卡路里。
要准确地了解您在使用健身房器械训练时消耗的卡路里数量,最好是使用专业运动手表或追踪器来测量您的消耗量。这些设备通常可以准确地测量您的心率、持续时间以及其他因素,并使用这些信息来估算您的卡路里消耗量。
Category: Human, ChatGPT
Output:<sep>[OUTPUT]ChatGPT<eod>
[LABELS]ChatGPT
--------------------------------------------------
[PROMPT]Classification Task: Are the following responses from a human or from ChatGPT?
Question: 我有一个计算机相关的问题,请用中文回答,什么是 5.25英寸软盘
Answer: 5.25英寸软盘是便携式软盘,它被封装在一个硬质塑料壳内,塑料壳上有防尘、防接角的金属保护罩,盘体无裸露,当将此盘放入磁盘驱动器时,计算机会自动移开金属罩而读取此盘中的数据。
软盘有八寸、五又四分一寸、三寸半之分,8英寸的软盘虽然从技术原理上已经很接近现代软盘,但缺陷就是体积过大,携带很不方便,于是5.25英寸的软盘诞生了。
但是之后体积更小、容量更大的光盘的出现,宣告了软盘时代的终结。当然,现在光盘也正在被U盘(USB disk)等更现代化的存储器淘汰。
Category: Human, ChatGPT
Output:<sep>[OUTPUT]Human<eod>
[LABELS]Human
点击直达模型体验