微信扫码
与创始人交个朋友
我要投稿
开源报告-Qwen系列
Qwen2报告:QWEN2 TECHNICAL REPORT
报告地址:https://arxiv.org/pdf/2407.10671
Code:https://github.com/QwenLM/Qwen2
Qwen1报告:QWEN_TECHNICAL_REPORT
报告地址: https://qianwen-res.oss-cn-beijing.aliyuncs.com/QWEN_TECHNICAL_REPORT.pdf
Qwen-blog:https://qwenlm.github.io/blog/qwen/
Qwen1.5-blog:https://qwenlm.github.io/blog/qwen1.5/
Qwen2-blog:https://qwenlm.github.io/blog/qwen2/
核心总结-Qwen2
【Qwen2模型结构改进】
Self-Attention:使用GQA-之前是MHA。
输入上下文长度:32k(0.5B和1.5B ) +128k(7B和72B) ,
【Qwen2 模型的结构参数】
#对于 Qwen2 的预训练,重点是优化数据集并且探索上下文长度扩展的有效方法。
【Qwen2长文本训练训练细节】
【Qwen2后训练数据组成】
示例(demonstration)数据 D={(xi,yi)}
偏好(preference)数据 P={(xi,yi⁺,yi⁻)}
【Qwen2模型后训练细节】
Qwen2训练数据的构建包括两个步骤:协作数据标注和自动数据合成。
【Qwen2长文本能力评估】
采用方法:Needle in a Haystack 、NeedleBench 和LV-Eval 。
【Qwen2-Dense模型结构】
基础架构:Decoder-only Transformer。
Norm函数:Pre-Norm + RMSNorm 。
激活函数:SwiGLU 激活函数。
位置编码:旋转位置编码 (RoPE)。
分词算法:字节对编码 (Byte-level BPE) -tiktoken实现。
Self-Attention:使用GQA-之前是MHA。【改进】
额外结构改动:在Self-Attention计算QKV 添加 bias,
输入上下文长度:32k(0.5B和1.5B ) +128k(7B和72B)
词表大小:151646 ≈ 151.6k
上下文窗口扩展:DCA[Dual Chunk Attention with YARN]
a.为扩展 Qwen2 的上下文窗口,实现DCA,将长序列分割成具有可管理长度[manageable lengths.]的 chunks。
b.如果输入可以在一个 chunk 中处理,则 DCA 跟原始 attention 输出相同的结果。否则,DCA 通过有效捕获 chunks 内和 chunks 之间 tokens 的相对位置信息来提升上下文性能。
c.通过 YARN (employ YARN)来重新缩放注意力权重(employ YARN),以实现更好的长度外推(better length extrapolation.)。
【Qwen2 模型的结构参数】
Norm函数:Pre-Norm + RMSNorm。
激活函数:SwiGLU 激活函数。
位置编码:旋转位置编码 (RoPE),使用FP32精确度的逆频率矩阵。
分词算法:字节对编码 (BPE) -tiktoken实现。
Self-Attention:MHA。带有 causal masks 的 self-attention。
额外结构改动:在Self-Attention计算QKV 添加 bias。
输入上下文长度:2k
词表大小:约152k
Embedding and output projection:对于embedding层和lm_head层不进行权重共享。
**************************************************************
【Qwen1 模型的结构参数】
【Qwen2的Tokenizer】
a.采用与Qwen相同的基于Byte-Leval 的 BPE Tokenizer[细节如下]。
b.Tokenizer具有很高的编码效率,从而促进了 Qwen2 的多语言能力。
c.词汇表包含 151643 个常规 tokens 和 3个特殊控制 tokens。
【Qwen1的Tokenizer】
a.采用字节对编码(BPE)作为标记化方法( tokenization method)。
b.使用快速BPE分词器tiktoken,选择词汇cl100k base作为起点。
c.扩充词汇表,包括常用的中文字符和词汇,以及其他语言中的词汇。
d.将数字拆分为单个数字。(have split numbers into single digits)
e.最终的词汇大小( vocabulary size)约为152K。
#QWEN在大多数语言中实现了比竞争对手更高的压缩效率。
#扩展QWEN词汇表的大小不会对预训练模型的下游性能产生负面影响。
Qwen2 MoE模型的架构与Qwen1.5-MoE-A2.7B非常相似。
a.与原始的FFN(前馈神经网络)不同,MoE FFN由多个独立的FFN组成,每个FFN作为一个专家。
b.每个token根据由门控网络G分配的概率被引导到一个特定的专家Ei进行计算:
【专家粒度.Expert Granularity】
a.MoE模型与dense模型的关键结构差异在于MoE层包含多个FFN,每个都作为一个独立的专家。从dense架构过渡到MoE架构的直接策略是将每个专家的参数设置为原始密集模型中单个FFN的参数。例如,从Mistral-7B过渡到Mixtral 8x7B,涉及同时激活其中的八个专家中的两个。
b.Qwen2模型采用细粒度专家(fine-grained experts ),创建规模较小的专家,同时激活更多的专家。通过利用这些细粒度专家,QWEN2 MoE促进了更多样化和动态的专家利用(diverse and dynamic expert utilization),从而提升了整体性能和适应性。
【专家路由.Expert Routing】
a.专家路由机制(expert routing mechanisms)的设计对提升MoE模型的性能至关重要。最近,出现将共享(shared)专家和路由特定(routing-specific)专家整合到MoE层中的明显趋势。
b.Qwen2采纳这一方法,因为它在各种任务中应用共享专家的同时,保留其他专家用于特定的路由场景。共享和专用专家的引入提供了一种更适应和高效的方法,用于开发MoE路由机制。
【专家初始化.Expert Initialization】:
a.专家初始化方式类似于upcycling,利用密集模型的权重。我们的方法强调细粒度专家之间的多样化,以增强模型的表征广度。
b.给定指定的专家中间大小hE,专家数量n和原始FFN中间大小hFFN,FFN被复制⌈n×hE/hFFN⌉次。这种复制确保与指定数量的专家兼容,同时适应任意的专家中间大小。
c.为了在每个FFN副本内部促进多样性,参数沿着中间维度( intermediate dimension)进行shuffled。这确保每个细粒度专家(fine-grained expert)展现出独特的特征,即使在不同的FFN副本之间也是如此。随后,这些专家从FFN副本中提取出来,其余维度被丢弃。
d.对于每个细粒度专家(fine-grained expert),其50%的参数被随机重新初始化( randomly reinitialized.)。这个过程在专家初始化中引入了额外的随机性,有可能增强模型在训练过程中的探索能力。
*************************************************************
模型预训练-Qwen2
对于 Qwen2 的预训练,重点是优化数据集并且探索上下文长度扩展的有效方法。
a.Qwen2预训练开发新的,大规模,高质量的多语言数据集。
b.在语料库上有所改进,增强数个关键领域的数据规模、质量和多样性。
c.预训练数据有哪些?:高质量的代码、数学和多语言数据。更具体没说。
【质量提升】Quality Enhancement:通过额外的启发式算法(additional heuristic)和基于模型的方法(model-based methods)对数据过滤算法进行改进,包括使用Qwen模型过滤出低质量的数据。模型被用于合成高质量的预训练数据。
【数据扩展】Data Expansion:Qwen2 收集了大量高质量的代码、数学和多语言数据,增强了模型对应的能力。新的数据集支持大约 30 种语言,例如英语、中文、西班牙语、法语、德语...。
【分布改进】Distribution Improvement:为了确保模型学习到类似于人类的分布,在对小模型进行实验,来优化各种来源和领域的数据混合(the mixing of data)。【这不和llama3.1一样的嘛,先通过小规模实验确定最优配比,然后将其应用到大模型的训练中。】
【Qwen2预训练数据总结】
a.预训练数据从Qwen1.5的3T tokens增加到7T tokens。进一步放宽阈值则有12T tokens。
b.在12T tokens 数据集上训练的模型(0.5B)没有比 7T tokens 上的模型有显著的性能提升。->怀疑数据量的增加不一定有益于模型的训练。
c.考虑到训练成本,选择使用高质量的7T tokens来训练更大的模型,进一步的探索留待未来的模型迭代中进行。
d.Qwen2-0.5B使用12T tokens。其余规模都使用7T tokens。MoE模型额外进行4.5T tokens预训练,遵循循环利用的原则( in line with the principle of upcycling.)。
e.与之前的Qwen模型类似,高质量的多任务指令数据(high-quality multi-task instruction data)被整合到Qwen2的预训练过程中,以增强其上下文学习( in-context learning )和指令遵循能力( instruction-following abilities)。
【Qwen2长文本训练训练数据】
a.长文本数据有哪些:xxx[没说]
b.长文本数据训练过程:xxx[没说]
【Qwen2长文本训练训练细节】
a.在预训练的结束阶段将上下文长度从4k tokens 增加到了 32k tokens。
b.长文本训练扩展过程引入了大量高质量、更长的数据【**】。
c.将 RoPE 的基频从 10000 修改为 1000000,以优化长上下文场景中的性能。
d.为充分利用模型的长度外推潜力(length extrapolation potential),采用YARN 机制( adopted the YARN mechanism)和 Dual Chunk Attention 机制。上述这些策略使模型可以处理多达128k tokens 序列,同时保持较高的性能。
#上下文长度方面,Qwen2所有的预训练模型均在32K tokens的数据上进行训练,并且发现其在128K tokens时依然能在PPL评测中取得不错的表现。对指令微调模型而言,列出了各个指令微调模型所支持的最大上下文长度。而在使用YARN这类方法时,Qwen2-7B-Instruct和Qwen2-72B-Instruct均实现了长达128K tokens上下文长度的支持。
a.预训练数据共3TB,主要涉及公共网络文档、百科全书、书籍、代码等,数据涉及多语言,但以中文和英文为主。
a.对于web数据,从HTML中提取文本内容,并采用语言识别工具确定语种;
b.数据去重:归一化后的精确匹配去重方法,使用MinHash和LSH算法的模糊去重;通过去重技术增加数据的多样性。
c.低质量数据清洗: 基于规则的数据过滤;语言模型打分、文本质量打分模型,用于识别潜在攻击性或潜在攻击性不适当的模型。
d.对各种来源的数据 手动采样并进行审查,以确保其质量;
e.有选择地对来自某些来源的数据进行上采样,以确保模型在各种高质量内容上进行训练。
f.预训练数据加入指令学习的数据。评测数据的去重,防止数据泄漏。
【重点保证预训练数据的多样性和高质量】
模型后训练-Qwen2
【Qwen2后训练细节】
a.在经过大规模的预训练后,进入Qwen2的后训练阶段。这个过程对于提升其在广泛领域(broad spectrum of domains)的能力至关重要,包括编码、数学、逻辑推理、指令遵循和多语言理解。
b.后训练阶段确保模型生成的内容与人类价值观相一致,使其具有帮助性、诚实性和无害性。与传统方法高度依赖大量人类监督不同,我们的方法侧重于使用最少的人类注释实现可扩展的对齐。
3.研究获取高质量示范数据和偏好数据的方法,用于监督微调(SFT)和从人类反馈中进行强化学习(RLHF),以最大限度地减少对人工标注的需求,同时最大化数据的质量和可靠性。
【Qwen2后训练数据组成】
示例(demonstration)数据 D={(xi,yi)}
偏好(preference)数据 P={(xi,yi⁺,yi⁻)}
其中, xi 代表指令(instruction), yi 代表满意的响应(satisfactory response),yi⁺和yi⁻ 是 xi 的两个 response,但 yi⁺比yi⁻更符合人类偏好。SFT 使用的数据集为 D ,RLHF 使用的数据集为 P 。
Qwen2训练数据的构建包括两个步骤:协作数据标注和自动数据合成。
a.从大规模指令语料库( large-scale instruction corpora,)中提取数据本体( the data ontology ),从而获得广泛多样的高质量指令( high-quality instructions)。这些指令经过系统增强以增加复杂性。通过人工标注( human annotation),获得目标响应 yi 及其正反例对(yi⁺,yi⁻) 。
b.采用各种自动对齐策略(automated alignment strategies ),在代码、数学、指令遵循、创作、角色扮演和安全等领域合成大量人工标注数据(artificially annotated data)。
【对比Qwen1】SFT DATA
【Qwen1-SFT训练数据】
a.对话形式的数据,使用多种风格对对话进行标注,来提升模型的实用性。
【自动本体提取】Automatic Ontology Extraction:首先应用开放式细粒度标注器 InsTag 来从大规模指令数据中提取出底层本体。随后进行手工优化确保提取的本体的准确性。
【指令选择】Instruction Selection:每个带有 tag 标记的指令都会根据 tag 多样性、语义丰富性、复杂性、意图完整性进行评估。选择一组具有代表性的指令。
【指令进化】Instruction Evolution:为了丰富指令数据集,采用自我进化策略( self-evolution),促使Qwen 模型向现有的指令添加约束或要求,从而增加指令的复杂度,并确保数据集中难度分布的多样性。
【人工标注】Human Annotation:使用不同的生成策略(generation strategies)和不同规模的 Qwen 模型,对每个指令生成多个响应(responses)。标注者根据他们的偏好对这些 responses 进行排序,确保最佳响应(response)符合要求,进而产生示例( demonstration )和偏好数据。
【拒绝采样】Rejection Sampling:a.对于数学等带有明确最终答案的任务,采用拒绝采样来提升解决方案的质量。b.LLM 被用来为每个指令生成多个响应(responses)(推理路径)。模型认为合理并得出准确结论的路径会被保留,作为示范数据。c.通过对比正确和错误的路径生成偏好数据。
【执行反馈】Execution Feedback:a.对于代码任务,LLM 被用来生成解决方案和相关测试用例。通过根据测试用例编译和执行生成的解决方案来评估其有效性,从而得到 demonstration 和 偏好数据。b.这种方法也适用于评估指令遵循情况。对于有约束条件的指令(如长度限制),LLM可以生成Python的验证函数,确保 response 符合指令的要求。
【数据再利用】Data Repurposing:a.在文学写作任务中,创建高质量的响应 对于 没有专业培训的注释者 来说是具有挑战性的。b.为了解决这个问题,从公开领域收集高质量的文学作品,并使用LLMs开发具有不同细节级别的指令。这些指令与原作配对,作为示范数据。c.例如,为了得到生动逼真的角色扮演 responses,从维基百科等知识库中获取详细的角色简介,然后指示 LLM 生成相应的指令和 responses。这个类似阅读理解任务的过程可以确保保持角色简介的完整性。
【宪法反馈】Constitutional Feedback:a.宪法AI(Constitutional AI)指的是指导LLMs根据预定义的原则集( predefined sets of principles)生成响应的过程。b.为确保遵守安全和价值观等准则,编制宪法(constitution)数据集。数据集描述 LLM 应该遵循和应该避免的原则。c.宪法AI被用来指示LLMs生成符合或偏离这些指导方针的响应,作为示范和偏好数据的参考(reference)。
a.收集超过50万条SFT数据,涵盖指令遵循、代码、数学、逻辑推理、角色扮演、多语言、安全等领域。
b.模型微调2个epoch,序列长度(the sequence length )为32k tokens。学习率从 7×10⁻⁶ 逐渐降低到 7×10⁻⁷ 。
c.为解决过拟合问题,将权重衰减(weight decay)设置0.1,最大梯度裁剪(gradient clipping )为1.0。
【对比Qwen1】SFT TRAINING
与预训练一致,在 SFT 训练任务中也应用了下一个标记预测。对系统和用户输入应用了损失掩码。更多详细信息展示在附录 A.1.1。
【Qwen1-SFT训练细节】
a.使用 AdamW 优化器,具体超参数如下:β1 设置为 0.9,β2 设置为 0.95,ϵ 设置为 10⁻⁸。
b..序列长度限制(the sequence length )为 2048,批量大小( batch siz)为 128。
c.模型总共进行 4000 步训练,学习率在前 1430 步逐渐增加,达到 2 × 10⁻⁶ 的峰值。
d.为防止过拟合,权重衰减(weight decay )设置为0.1,丢弃正则化(dropout regularization)设置为 0.1,梯度裁剪限制( gradient clipping)为 1.0。
【Reinforcement Learning from Human Feedback】
a.RLHF 训练包括两个连续的阶段:offline 和 online 训练(offline and online training.)。
b.在offline训练阶段,使用预先准备好的偏好数据集( pre-compiled preference dataset)P 进行DPO 训练,使用DPO最大化yi⁺和yi⁻ 之间的可能性差异(the difference in likelihood )。
c.在online训练阶段,模型利用奖励模型(RM)进行实时反馈,不断迭代优化其性能。具体来说,从当前的 policy 模型中采样多个响应(response),用 RM 来选择最佳和最差的响应(response)来形成偏好对。
d.还采用在线合并优化器(Online Merging Optimizer)来缓解对齐税( the alignment tax)问题(模型与人类对齐过程中造成的性能下降)。
【对比Qwen1】基于分类反馈的强化学习RHLF
b.实施了基于人类反馈的强化学习(RLHF),以进一步使 SFT 模型与人类偏好对齐。
【3.2.1 奖励模型.REWARD MODEL】
b.在微调阶段,收集了各种提示,并根据来自 QWEN 模型的响应调整奖励模型的反馈。为保证数据的多样性和复杂性,通过6600个详细标签的分类系统平衡采样获取高质量偏好数据。平衡采样算法在为奖励模型注释选择提示时考虑了多样性和复杂性。
c.奖励模型时由同等大小Qwen模型+池化层得来,用根据特定的结束标记映射值作为模型奖励值。
e.模型在训练过程中,学习率恒为3x10⁻⁶,批次大小为64,序列长度为2048,训练一个epoch。
【3.2.2 强化学习REINFORCEMENT LEARNING】-PPO
a.近端策略优化PPO阶段共包含四个模型:policy模型、value模型、reference模型、reward模型。
b.在开始PPO前,先暂停policy模型的更新,对value模型训练50步预热,这样保证value模型能够有效地适应不同的reward模型。
c.在PPO过程中,对每个query会同时采样两个response,KL散度系数设为0.04,并根据平均值对奖励进行归一化处理。
d.policy模型和value模型的学习率分别为1x10⁻⁶ 和5x10⁻⁶。为了增强训练的稳定性,使用价值损失裁剪( value loss clipping),裁剪值0.15。在推理过程中,生成策略的top-p值设置为0.9。
e.研究表明,尽管当 top-p 设置为 1.0 时熵值略低,但奖励的增长速度更快,最终在类似条件下会带来更高的一致性评价奖励。
f.使用预训练梯度( pre-trained gradient)以减轻对齐损失( pre-trained gradient)。实验证明,对于特定的奖励模型,KL 惩罚(the KL penalty)足够强大,可以在非严格代码或数学性质的基准测试中(如测试常识知识和阅读理解)抵消对齐损失。使用显著多于 PPO 数据的预训练数据量对于确保预训练梯度的有效性至关重要。
g.实证研究表明,过大的系数值(overly large value)会显著阻碍对奖励模型的对齐,最终损害最终的对齐效果,而过小的值则只会对减少对齐损失产生微小影响。
模型评估-Qwen2
为了全面评估 Qwen2 Base 模型和 Instruct 模型,实施一套综合评估协议(comprehensive evaluation protocol. )。该协议考察了多方面的能力,包括通用知识理解、语言理解、生成、编码、数学、推理和其他专长领域。
a.基础模型通过少样本提示(除非另有说明)在已建立的基准数据集上进行评估。b.对于指令微调模型,除了基准评估外,我们还优先进行人类偏好评估。
a.评估基础语言模型核心能力的常见做法是使用少样本或零样本提示进行基准数据集评估。
b.评估主要关注模型在自然语言理解、通用问答、编码、数学、科学知识和推理等方面的性能。
c.通过这些基准测试和评估协议,能够全面了解基础语言模型在多个关键领域的核心能力。
【Qwen2-72B】结果如表2所示:
通用知识理解(general knowledge understanding )方面,Qwen2-72B在MMLU和MMLU-Pro上优于Llama-3-70B,分别提高了4.7和2.8的准确率。在科学评估中(In scientific assessments),Qwen2-72B在GPQA和Theorem QA上的表现优于Llama-3-70B,分别提高了1.6和9.8。在丰富编码数据后(In scientific assessments),Qwen2-72B在HumanEval和MBPP评估中比Qwen1.5-72B显著提高了18.3和10.0个百分点。增强的数学相关数据(In scientific assessments),使得Qwen2-72B在GSM8K和MATH基准测试中比Qwen1.5-72B高出10.0和17.0个百分点。在推理能力方面(在推理能力方面),考虑到BBH、Winogrande和ARC-C,Qwen2-72B与Llama-3-70B相当,这归功于其改进的编码和数学数据。在中文语言理解评估中(In assessing languageunderstanding in Chinese,),Qwen2-72B显著优于Mixtral-8x22B和Llama-3-70B,同时也优于Qwen1.5-72B。
【指令微调模型】
a.利用开放数据集和基准测试( open datasets and benchmarks.)对基础技能和人类偏好进行评估。
b.还通过详细的内部检查进一步探究模型在关键领域的能力,特别关注对长上下文处理能力的评估。
c.安全措施包括多语言安全评估和红队演练。以下部分详细介绍了评估方法及其结果。
【 Open Benchmark Evaluation】
a.将Qwen2-72B-Instruct与包括Mixtral-8x22B-Instruct、Llama-3-70B-Instruct以及Qwen1.5-72B-Chat在内的指令微调模型进行比较。结果如表6所示。
b.可以发现,一个强大的基础语言模型可以显著提升指令微调模型的下游性能。具体来说,Qwen2-72B-Instruct在语言理解、编码和数学等方面表现优于同类模型,但在GPQA和MBPP上除外。
c.关于人类偏好对齐和指令遵循,Qwen2-72B相较于基准模型具有显著优势。认为这种成就是归功于高质量的预训练模型以及数据和训练技术在后训练阶段的改进。
【In-House Automatic Evalution】
为了评估长上下文处理能力[ long context capabilities ],采用三种方法:Needle in a Haystack 、NeedleBench 和LV-Eval 。
【Needle in a Haystack】
a.Needle in a Haystack实验评估模型在大量文本中精确定位事实的能力。
b.构建长度为8K、16K、直到128K标记的文本,并将事实策略性地放置在不同深度。每个深度间隔(例如从0%到10%)包含两个实例。对于超过32K标记的上下文,使用YARN 进行评估。
c.Qwen2-72B-Instruct在从整个128K上下文中检索信息方面表现出色(图1)。结合其固有优势,这个模型成为处理大规模文本的最佳选择(前提是有足够的资源)。此外,同系列的模型在不同上下文长度上也表现出色。具体而言,Qwen2-7B-Instruct在处理长达128K标记的上下文方面具有很高的准确性,而Qwen2-57B-A14B-Instruct在处理长达64K标记的上下文时表现出色,Qwen2系列的两个较小模型可以支持长达32K标记的上下文。
【NeedleBench】
a.NeedleBench在NIAH的基础上增加了难度,在段落中包含多个事实(两到五个),需要同时识别和多跳推理。
b.YARN和DCA的整合显著提升了Qwen2模型的长上下文处理能力(表12)。Qwen2-7B-Instruct超越了声称具有1M上下文长度的ChatGLM4-9B-1M。此外,Qwen2-72B-Instruct表现强劲,与ChatGLM4-9B-1M相比,其准确率仅下降了6个百分点,而ChatGLM4-9B-1M的初始准确率较低,下降更为明显,为11个百分点。
【LV-Eval】
a.LV-Eval包括11个多样化的QA数据集,这些数据集要求同时理解多个证据。为了纠正其原始指标过于严格且导致高假阴性率的缺陷,采用关键字召回作为报告的分数。
b.整合YARN和DCA显著增强了Qwen2模型在LV-Eval上的长上下文能力(表12)。Qwen2-7B-Instruct与ChatGLM4-9B-1M的表现持平,尽管在扩展上下文时有较为明显的下降。此外,Qwen2-72B-Instruct在所有长度上表现强劲,确认了其在处理长上下文任务方面的能力。
a.在多语言评估中,实施全面的人工评估,以评估多语言能力。具体来说,设计多样化的测试案例,评估大型语言模型的不同能力,并包含多种语言的测试案例。邀请每种语言的一位专业注释员,这些注释员都主修该语言。对于每个测试案例,注释员对模型的响应进行评分,评分范围为1到5分。
b.在表13中报告了模型和基线模型在不同语言评估中的结果。可以发现,Qwen2-72B-Instruct的平均表现显著优于GPT-3.5-Turbo,并且与GPT-4-Turbo具有竞争力,仅稍微落后于Claude-3-Opus。这表明,我们的多语言预训练和指令微调数据对Qwen2-72B-Instruct的多语言能力做出了贡献,使其在多语言能力上与大多数最先进的专有LLMs竞争力相当。
模型推理-Qwen2
Qwen2-7B-Instruct推理代码快速实现:from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2-7B-Instruct"
device = "cuda" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-23
人生搜索引擎免费用,开源版哈利波特“冥想盆”登GitHub热榜,支持中文
2024-11-23
o1圈杀疯了,阿里又开源Marco-o1
2024-11-22
Kotaemon:开源基于文档检索的聊天系统(RAG Chat)
2024-11-22
不可思议!AirLLM 如何让 70B 大模型在 4GB GPU 上顺利推理?
2024-11-22
刚刚,OpenAI公开o1模型测试方法,人机协作时代!
2024-11-21
22.4K+ Star!Chatbox:你的终极AI桌面助手
2024-11-21
Magentic-One:微软开源多智能体系统,让 AI 自己动手解决问题
2024-11-21
阿里发布Qwen2.5-Turbo,支持100万Tokens上下文!
2024-05-06
2024-07-25
2024-08-13
2024-06-12
2024-07-11
2024-06-16
2024-07-20
2024-06-15
2024-07-25
2024-07-25
2024-11-22
2024-11-19
2024-11-13
2024-11-13
2024-10-07
2024-09-22
2024-09-20
2024-09-14