Lingowhale 8B
模型简介
模型特点
模型能力
使用案例
🚀 语鲸-8B
语鲸-8B是深言科技推出的中英双语大语言模型,在大量高质量数据上预训练,有强大基础能力。模型对学术研究开放,获官方商用许可后可免费商用,还提供便捷推理接口和微调示例。
🚀 快速开始
您可通过以下链接访问项目相关资源:
✨ 主要特性
- 双语能力:在数万亿token的高质量中英数据上预训练,支持中英双语。
- 长上下文处理:预训练阶段使用8K上下文长度训练,能完成长上下文理解和生成任务。
- 开放易用:对学术研究完全开放,商用申请通过后可免费商用,还提供Huggingface推理接口和参数高效微调示例。
📦 安装指南
安装依赖
pip install -r requirements.txt
⚠️ 重要提示
如需使用flash attention需要安装flash-attn;如需使用LoRA等少参数微调方法需要额外安装peft。
💻 使用示例
基础用法
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室铭\n唐 刘禹锡\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
📚 详细文档
测评结果
我们在多个公开评测基准上对模型进行了测试,具体如下:
- C-Eval:中文基础模型评估基准,用dev集作few-shot来源,在test集进行5-shot测试。
- MMLU:英文基础模型评估基准,进行5-shot测试。
- CMMLU:中文评估基准,用dev集作few-shot来源,在test集进行5-shot测试。
- Gaokao:以中国高考题目为数据集的评估基准,保留四选一选择题,随机划分后进行5-shot测试。
- HumanEval:英文评估基准,采用zero-shot计算Pass@1方法测试。
- GSM8K:小学数学应用题数据集,进行8-shot测试。
- BBH:从Big-Bench评测基准任务中选出的评估基准,进行3-shot测试。
- AGIEval:考察基础模型类人能力的基准测试,保留四选一选择题,随机划分后进行5-shot测试。
测评结果如下表所示:
模型 | C-Eval | MMLU | CMMLU | GAOKAO | HumanEval | GSM8K | BBH | AGIEval |
---|---|---|---|---|---|---|---|---|
5-shot | 5-shot | 5-shot | 5-shot | 0-shot | 8-shot | 3-shot | 5-shot | |
GPT-4 | 68.4 | 83.9 | 70.3 | 66.2 | 69.5 | 90.0 | 75.1 | 63.3 |
GPT-3.5 Turbo | 51.1 | 68.5 | 54.1 | 47.1 | 52.4 | 57.8 | 61.6 | 46.1 |
LLaMA2-7B | 28.9 | 45.7 | 31.4 | 26.0 | 12.8 | 16.2 | 39.2 | 26.5 |
ChatGLM2-6B* | 51.7 | 47.9 | - | - | - | 32.4 | 33.7 | - |
百川2-7B基础版* | 54.0 | 54.2 | 57.1 | 47.5 | 18.3 | 24.5 | 41.6 | 42.7 |
通义千问-7B v1.1* | 63.5 | 58.2 | 62.2 | - | 29.9 | 51.7 | 45.0 | - |
语鲸-8B基础版 | 63.6 | 60.2 | 62.8 | 50.3 | 32.9 | 55.0 | 47.5 | 43.8 |
*表示其模型结果来自于官方, 所有的结果都精确到小数点后1位。
生成样例
以下是使用基于LingoWhale-8B模型微调后的对话模型生成的样例:
数学计算
问题:f(x)为偶函数, f(1) = 3, f(2) = 4, 那么f(1) + f(-2) ^2 等于多少? 请一步一步说明
解答:首先,根据题目中给出的条件,我们可以知道:
- f(x) 是一个偶函数,即 f(-x) = f(x)。
- f(1) = 3。
- f(2) = 4。
接下来,我们需要求出 f(1) + f(-2)^2 的值。 由于 f(x) 是偶函数,所以 f(-2) = f(2),因此 f(-2) = 4。 将 f(1) 和 f(-2) 的值代入 f(1) + f(-2)^2 中,得到: f(1) + f(-2)^2 = 3 + (4)^2 = 3 + 16 = 19。 因此,f(1) + f(-2)^2 的值为 19。
角色扮演
问题:作为有丰富营销经验的品牌经理,请为我提供一条关于以下情境的品牌营销策略: 情境:618期间,提高品牌销售额 品牌定位:国产精品眉笔 建议要求:提供具有创新性和实效性的品牌营销策略,帮助提升品牌的销售额, 并加入直播带货的方案。
解答:在618期间,为了提高品牌销售额,我们可以采取以下品牌营销策略:
-
推出限时优惠活动:在618活动期间,我们可以在品牌官方网站上推出限时优惠活动,例如购买眉笔送赠品、打折促销等,以吸引消费者的注意力并促进销售。
-
利用社交媒体宣传:我们可以通过社交媒体平台(如微博、微信、抖音等)发布品牌宣传内容,包括产品介绍、使用技巧、用户评价等,以增加品牌曝光率和用户互动性。
-
与知名博主合作推广:我们可以邀请一些知名的美妆博主或网红来试用我们的产品,并在其社交媒体上发布推荐视频或图文,以吸引更多的目标受众。
-
直播带货:我们可以邀请一些知名的带货主播或明星来为我们的产品进行直播带货,通过他们的影响力来吸引更多的消费者关注和购买。
-
参与电商平台活动:我们可以积极参与各大电商平台的促销活动,例如满减、满赠等,以吸引更多的消费者购买我们的产品。
综上所述,以上品牌营销策略可以帮助我们在618期间提高品牌销售额,同时加入直播带货的方案可以更好地吸引目标受众,提高销售效果。
诗歌创作
问题:写一个七言诗,描述岳飞的诗。诗词希望是宋代诗的风格。
解答:《岳飞》
铁马金戈壮士魂,
精忠报国志凌云。
千古英雄谁可及,
岳家军威震乾坤。
文化知识
问题:我要去成都武侯祠参观,能帮我详细介绍下武侯的生平事迹吗?
解答:诸葛亮(181年-234年),字孔明,号卧龙,徐州琅琊阳都(今山东临沂市沂南县)人,三国时期蜀汉丞相,杰出的政治家、军事家、文学家、书法家、发明家。早年随叔父诸葛玄到荆州,诸葛玄死后,诸葛亮就在隆中隐居。刘备三顾茅庐请出诸葛亮,联合东吴孙权于赤壁之战大败曹军,形成三国鼎足之势,又夺占荆益。刘备入蜀后,诸葛亮镇守荆州。刘备称帝后,诸葛亮被任命为丞相,主持朝政。后主刘禅继位,诸葛亮被封为武乡侯,领益州牧。勤勉谨慎,大小政事必亲自处理,赏罚严明;与东吴联盟,改善和西南各族的关系;实行屯田政策,加强战备。前后五次北伐中原,多以粮尽无功。终因积劳成疾,于234年病逝于五丈原(今陕西岐山县南),享年54岁。刘禅追封其为忠武侯,后世常以武侯尊称诸葛亮。东晋政权因其军事才能特追封他为武兴王。诸葛亮散文代表作有《出师表》、《诫子书》等。曾发明木牛流马、孔明灯等,并改造连弩,叫做诸葛连弩,可一弩十矢俱发。诸葛亮一生“鞠躬尽瘁、死而后已”,是中国传统文化中忠臣与智者的代表人物。
代码生成
问题:你是一名编程开发者,能写一个正则帮忙判断一个字符串是否是合理的手机号码, 用Python实现。
解答:
import re
def is_valid_phone(phone):
pattern = r'^1[3-9]\d{9}$'
return bool(re.match(pattern, phone))
print(is_valid_phone('13800138000')) # True
print(is_valid_phone('12345678901')) # False
部署和推理
Python样例
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室铭\n唐 刘禹锡\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
微调方法
模型微调样例代码以transformers.Trainer
为基础,大部分参数和使用方法可参考Huggingface中Trainer
的教程和介绍。
⚠️ 重要提示
本章节旨在展示微调过程,并不对该微调配置下进行微调后的模型效果进行保证。
单机训练
下面是一个单机进行微调的例子,使用的数据为从COIG数据集中随机选取的10000条指令微调数据,您可以使用自己的数据进行替换。
hostfile=""
deepspeed --hostfile=$hostfile finetune/finetune.py \
--report_to "none" \
--data_path "finetune/data/coig_10k.json" \
--model_name_or_path deeplang-ai/LingoWhale-8B \
--output_dir "output" \
--model_max_length 2048 \
--num_train_epochs 4 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 1 \
--save_strategy epoch \
--learning_rate 2e-5 \
--lr_scheduler_type constant \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-4 \
--warmup_ratio 0.0 \
--logging_steps 1 \
--gradient_checkpointing True \
--deepspeed finetune/ds_config.json \
--bf16 True \
--tf32 True
若要替换为自己的数据,可以使用如下格式的json文件。
[
{
"id": 0,
"conversations": [
{
"from": "human",
"value": "请问什么是“模式年龄”?"
},
{
"from": "model",
"value": "模式年龄是指利用放射性衰变规律假定地质样品形成时的初始同位素组成计算得到的年龄。"
},
...
]
},
...
]
多机训练
多机器训练需要编辑如下格式的hostfile
文件。其中,每一行表示一个机器,ip_address-X
为各个机器对应的ip地址,slots
内容表示机器可用GPU数量。内容格式如下:
ip_address-1 slots=8
ip_address-2 slots=8
ip_address-3 slots=8
ip_address-4 slots=8
...
同时指定hostfile参数为hostfile
文件路径,然后运行如下命令即可启动多机训练。
hostfile="/path/to/hostfile"
deepspeed --hostfile=$hostfile finetune/finetune.py \
--report_to "none" \
--data_path "finetune/data/coig_10k.json" \
--model_name_or_path deeplang-ai/LingoWhale-8B \
--output_dir "output" \
--model_max_length 2048 \
--num_train_epochs 4 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 1 \
--save_strategy epoch \
--learning_rate 2e-5 \
--lr_scheduler_type constant \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-4 \
--warmup_ratio 0.0 \
--logging_steps 1 \
--gradient_checkpointing True \
--deepspeed finetune/ds_config.json \
--bf16 True \
--tf32 True
少参数微调
通过使用peft,可以轻松调LoRA, Prefix-Tuning等少参数微调的方法。目前在代码中集合了LoRA的训练方法,可以通过加入--use_lora True
启动。
使用LoRA训练的checkpoint可以通过下面的代码读取和调用:
from peft import AutoPeftModelForCausalLM
model = AutoPeftModelForCausalLM.from_pretrained("output", trust_remote_code=True)
📄 许可证
社区使用LingoWhale-8B模型需要遵循Apache 2.0和《LingoWhale-8B模型许可协议》。若您期望将此源模型或其衍生品用作商业用途,请填写问卷进行申请,通过后即可免费商用。



