NDLSLM_0.8B-beta-Chat
介绍
NDLSLM0.8B-beta-Chat:此模型是基于NDLSLM0.8B-beta-base模型,在大约为324万条SFT中文数据进行全参数微调的Chat模型,其框架依赖于transformer-decoder only,此模型的具体结构为:
全参数微调数据集主要为alpacagpt4datazh、Bell的train3.5MCN以及firefly-train-1.1M,过滤掉大于maxlen=512的数据,总量约为324万条。 此模型主要有以下特点:
- 训练语料:即使该版本模型训练的语料较少,但支持中文以及英文包括代码的训练。
- 自己训练分词模型:本次预训练并没有采用其他开原模型,而是从零开始训练的分词模型,词表规模不大,为60930,语料库基本上是采样的天工数据集以及维基百科中英文、github代码。
- 模型配有详细注释以及RMSNorm使用了flash-attention:本次代码模型参考了transformers库中的llama2开源代码以及通义千问开源代码,代码的细节基本上在文件中有标注,并且配置了flash-attention,目前解决了在RMSNorm归一化上使用了flash-attn,但在self-attention上并没有使用成功,希望在未来能够解决这个问题,以此能够提高训练效率。
- SFT监督微调语料更多:相比于NDLSLM0.8B-Chat,NDLSLM0.8B-beta-Chat在SFT训练语料增加了约一倍。
- 支持Lora微调:目前正在训练中---------
要求环境
- python 3.8及以上版本
- pytorch 2.0及以上版本
- 建议使用CUDA 11.4及以上(GPU用户、flash-attention用户等需考虑此选项)
pip安装
运行NDLSLM_0.8B-Chat,请确保满足上述要求,再执行以下pip命令安装依赖库
pip install transformers==4.39.3 accelerate flash-attn
推荐安装flash-attn的步骤:(如果没有安装此模型也可以运行,安装了推理会更快一些。)
git clone https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip install .
# 下方安装可选,安装可能比较缓慢。
# pip install csrc/layer_norm
# pip install csrc/rotary
快速使用
您可以通过以下代码轻松调用:
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig
tokenizer = AutoTokenizer.from_pretrained("Ndlcwx/NDLSLM_0.8B-beta-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Ndlcwx/NDLSLM_0.8B-beta-Chat", device_map="auto", trust_remote_code=True).eval()
from transformers import GenerationConfig
gen_config = GenerationConfig(
temperature=0.9,
top_k=20,
top_p=0.5,
do_sample=True,
num_beams=1,
repetition_penalty=1.3,
max_new_tokens=300,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id,
)
prompt= '请问世界上最高的山峰是什么?'
response = model.chat(tokenizer,query=prompt,max_window_size=300,gen_config=gen_config)
print(response)
'''
在地球上的山脉中,最南端的是珠穆朗玛峰。它位于喜马拉雅山脉的一部分,海拔8,848米(29,029英尺)。 这座山被认为是地球上最大的峡谷之一,也是世界上最长的河流之一。它的最大深度为12公里左右,是珠峰的顶峰所在位置。 珠穆朗玛峰是世界上最具挑战性的登山目标之一,每年都有数百万人的攀登者前往这里进行登顶和探索。
此外,由于海拔高度的变化,珠穆朗玛峰的高度也随着高度的增加而增加。因此,即使是在高海拔地区,其高度仍然会不断升高。但是,一旦达到最高点并到达山顶时,需要面对更高的温度、更深的冰川以及更加恶劣的环境条件等极端环境因素的影响。 因此,从全球范围内来看,珠穆朗玛峰是一个令人难以置信的天堂!
'''
prompt= '请你介绍一下苹果公司'
response = model.chat(tokenizer,query=prompt,max_window_size=300,gen_config=gen_config)
print(response)
'''
苹果(Apple)是一家美国科技公司,成立于1976年。它总部位于加利福尼亚州库比蒂诺市(Cupertino),在加州、加利福尼亚和德克萨斯州设有多个生产基地和销售中心。该公司的创始人是史蒂夫·乔布斯(Steve Jobs)、比尔•盖茨(Bill Gates)等人。该公司致力于开发新型智能手机技术,并推出多款手机产品,包括iPhone 12系列、iPad Pro等。
苹果公司在科技领域拥有强大的研发实力和市场地位,其产品线涵盖了平板电脑、智能手表、智能家居等领域。此外,公司还在全球范围内建立了广泛的营销网络,在全球范围内开展业务活动,为全球消费者提供优质的产品和服务。
尽管该公司的成功受到广泛关注,但许多人对它的未来充满信心。虽然谷歌已经将这个目标推到了新的高度,但这并不意味着它将失去它在未来的地位和影响力。因此,我们需要继续关注其在人工智能领域的领先地位以及如何保持竞争力以应对不断变化的市场环境的变化。
'''
prompt= '请问李白是谁?'
response = model.chat(tokenizer,query=prompt,max_window_size=300,gen_config=gen_config)
print(response)
'''
他/她(意为“人”)是唐代著名的诗人,他的诗歌作品以豪放、奔放的笔调著称。他的作品充满了诗意和哲理,具有深刻的思想内涵和艺术价值。
《将进酒》中有一个人物的名字叫做李白的词作:“人生若只如初见”,这句话表达出对人生的感悟和对未来的憧憬之情。在诗的结尾处,“我欲乘风归去,又恐琼楼玉宇,高处不胜寒”表达了他对生命的热爱与追求;而这首诗句则表现了作者对于生命的思考和感慨。整首诗词语言优美流畅,意境深远,深受读者喜爱。《将进酒》不仅是一篇优美的文学作品,更是杜甫所创作的经典之作之一;《要你爱我吗?”这句名言也传递出了一种希望的力量:无论何时何地都可以拥有爱和幸福!
总之,《将进酒》是中国古代文学中的珍品,它的散文风格独具特色,充满情感和精神力量,被誉为中国古代古典小说的代表作之一。它展现了苏轼的思想和文化修养,同时也反映了当时的社会现实和社会问题。因此,"求得自己"这个成语也被视为中国现代文坛的经典名句之一。
'''
prompt= '请你用Python语言写一段关于排序的代码'
response = model.chat(tokenizer,query=prompt,max_window_size=300,gen_config=gen_config)
print(response)
'''
print("Hello World!")
# 输入一个数字,使用for循环遍历整个列表。
while True:
# 如果当前数字是偶数(例如2, 3等),则将其加到数组中并打印结果
def add_numbers(lst):
return len(lst) - 1
# 使用join函数进行字符串操作和交换位置信息
str = "hello world"
replace_list = sorted(['a', 'b') for i in range(len(lst))])
print(add_numbers(str))
输出结果为:`[] [1 2 4 5 6 7 8 9 10 11 13 14 15 16 17 19 20 21 23 24 25 26 27 28 29 30 41 43 47 53 59 61 67 71 73 79 83 89 97}``
因此,当将给定的数字转换为整数时,计算的结果应该是4、5或7;如果需要更改数据类型,可以使用sort()方法对变量中的每个元素添加新的值来修改该字符的名称。最后返回转换后的字符串即可完成程序。
'''
prompt= '请你介绍一下Python语言的特点'
response = model.chat(tokenizer,query=prompt,max_window_size=300,gen_config=gen_config)
print(response)
'''
- 语法:使用空格隔开,可读性高。
- 可扩展性:可以扩充到多种类型(如JavaScript、Java等)的库和框架。
- 面向对象编程:支持类、继承和多态等特点;适用于数据结构中的函数定义与调用方式。
- 使用多线程技术:具有多个处理器模块的组合模式,可以在不同的操作系统上运行不同版本的操作程序。
- 多线程设计:通过并行计算来简化代码执行过程,减少内存占用并提高性能。
- 系统管理器架构:将系统管理和操作流程整合在一起,实现系统的自动化控制和管理功能。
- 数据库管理系统:用于存储各种数据的查询和处理信息,包括电子邮件、社交媒体、网络搜索等等。
总之,Python是一种易于学习和使用的编程语言,适合初学者学习和使用。
'''
注意:由于本模型预训练语料较其他开源的大参数模型少很多,chat模型的回答不一定准确,主要是验证了该模型在SFT下的可行性。
NDLSLM_0.8B-beta-Chat模型参数 (Model)
NDLSLM_0.8B-base模型参数基本情况如下所示:
Hyperparameter | Value |
---|---|
numhiddenlayers | 12 |
numattentionheads | 16 |
hidden_dim | 1600 |
vocab size | 60930 |
maxseqlen | 512 |
intermediate_size | 7800 |
use_cache | True |
rope_theta | 10000.0 |
本模型在位置编码、FFN激活函数和normalization的实现方式上采用了RoPE相对位置编码、SiLU激活函数、RMSNorm(可选安装flash-attention加速); 在自注意力机制计算中支持使用GQA(Group query attention),MQA(Multi-query-attention);支持使用NTK缩放。
评论