探索阿里通義千問 Qwen2.5:新一代開源大模型的卓越力量
在人工智能領(lǐng)域的快速發(fā)展進程中,阿里通義千問的 Qwen2.5 模型以其強大的性能和廣泛的應(yīng)用潛力,成為了備受關(guān)注的焦點。2024 云棲大會上的發(fā)布,更是讓 Qwen2.5 走進了更多開發(fā)者和研究者的視野。本文將深入探討 Qwen2.5 的各項技術(shù)特點和優(yōu)勢。
一、總體概述
Qwen2.5 全系列涵蓋了多個尺寸的大語言模型、多模態(tài)模型、數(shù)學(xué)模型和代碼模型。這種全面的模型體系,為不同領(lǐng)域的應(yīng)用提供了強大的支持。無論是自然語言處理任務(wù)中的文本生成、問答,還是在編程領(lǐng)域的代碼生成與輔助,亦或是數(shù)學(xué)問題的求解,Qwen2.5 都能發(fā)揮出色的作用。每個尺寸的模型都有基礎(chǔ)版本、指令跟隨版本、量化版本,總計上架 100 多個模型,滿足了用戶在不同場景下的多樣化需求,刷新了業(yè)界紀錄。
二、性能提升
1. 預(yù)訓(xùn)練數(shù)據(jù)優(yōu)勢:Qwen2.5 全系列模型在 18t tokens 數(shù)據(jù)上進行預(yù)訓(xùn)練,預(yù)訓(xùn)練數(shù)據(jù)量大幅度增長達到了 18 萬億 tokens,超過了 meta 最新開源 llama-3.1 的 15 萬億,成為目前訓(xùn)練數(shù)據(jù)最多的開源模型之一。大量的數(shù)據(jù)為模型提供了更豐富的知識和更準確的理解能力。
2. 整體性能升級:與 Qwen2 相比,Qwen2.5 的整體性能提升了 18%以上。在知識能力方面,其在 MMLU 基準測試等多個測評中都有顯著改進;數(shù)學(xué)能力也得到了快速提升,例如在 Math 基準上,Qwen2.5-7b/72b-instruct 的得分相比 Qwen2-7b/72b-instruct 有了明顯提高。
3. 指令跟隨與結(jié)構(gòu)化數(shù)據(jù)處理能力增強:在指令跟隨方面,Qwen2.5 進步明顯,能夠更好地理解和執(zhí)行用戶的指令。同時,對于結(jié)構(gòu)化數(shù)據(jù)(如表格)的理解和生成結(jié)構(gòu)化輸出(尤其是 json)的能力也實現(xiàn)了顯著改進。這使得它在處理復(fù)雜數(shù)據(jù)和需要精確輸出的任務(wù)中表現(xiàn)更加出色。
4. 強大的語言支持:Qwen2.5 支持高達 128k 的上下文長度,可生成最多 8k 內(nèi)容,并且能夠絲滑響應(yīng)多樣化的系統(tǒng)提示,實現(xiàn)角色扮演和聊天機器人等任務(wù)。它還支持中文、英文、法文、西班牙文、俄文、日文、越南文、阿拉伯文等 29 種以上語言,具有強大的多語言能力。
三、專項突破
1. Qwen2.5-coder:用于編程的 Qwen2.5-coder 在多達 5.5t tokens 的編程相關(guān)數(shù)據(jù)上進行了訓(xùn)練,為開發(fā)者提供了更高效的編程輔助。無論是代碼的生成、調(diào)試,還是回答編程相關(guān)的問題,它都能給出準確且實用的建議。
2. Qwen2.5-math:Qwen2.5-math 支持使用思維鏈和工具集成推理(TIR)解決中英雙語的數(shù)學(xué)題,是迄今為止最先進的開源數(shù)學(xué)模型系列。通過在更大規(guī)模的高質(zhì)量數(shù)學(xué)數(shù)據(jù)上進行預(yù)訓(xùn)練,并結(jié)合 Qwen2-math 的技術(shù),其數(shù)學(xué)問題解決能力得到了極大的提升。
四、應(yīng)用場景
Qwen2.5 的強大性能和豐富功能使其在眾多領(lǐng)域都有著廣闊的應(yīng)用前景。
- 教育領(lǐng)域:可以作為智能輔導(dǎo)工具,為學(xué)生解答學(xué)習(xí)過程中的各種問題,輔助他們理解復(fù)雜的知識概念。例如,在語文學(xué)習(xí)中,Qwen2.5 可以分析文學(xué)作品、生成寫作建議;在數(shù)學(xué)學(xué)習(xí)中,幫助學(xué)生解決難題、講解解題思路。
- 企業(yè)辦公:在企業(yè)中,Qwen2.5 可用于智能客服,快速準確地回答客戶的問題,提高客戶滿意度。同時,還能助力自動化辦公,如撰寫報告、整理數(shù)據(jù)等,極大地提高工作效率。
- 科研領(lǐng)域:為研究人員提供強大的數(shù)據(jù)處理和分析支持。在文獻綜述中,快速梳理相關(guān)領(lǐng)域的研究現(xiàn)狀;在實驗設(shè)計階段,提供創(chuàng)新的思路和方法。
- 編程開發(fā):Qwen2.5-coder 為開發(fā)者提供高效的編程輔助,生成高質(zhì)量的代碼、進行代碼優(yōu)化和調(diào)試,加快軟件開發(fā)的進程。
五、本地部署
在魔搭社區(qū),開發(fā)者可以通過多種方式體驗和使用Qwen2.5系列模型??梢允褂肕odelScope CLI、Python SDK或者git clone的方式下載模型。Qwen2.5合集的體驗鏈接為:???https://modelscope.cn/studios/qwen/Qwen2.5??。此外,還有小程序體驗,如看圖解數(shù)學(xué)題(Qwen2 - VL + Qwen2.5 - Math)的體驗鏈接為:https://modelscope.cn/studios/qwen/Qwen2.5 - Math - demo。
1、模型下載
可以采用modelscope 的snapshot_download進行下載模型(提前安裝modelscope : pip install modelscope),第一個參數(shù)為modelscope上的模型路徑,cache_dir為模型本地存放地址
#模型下載
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct', cache_dir='/root/autodl-tmp', revisinotallow='master')
下載完成如下:
2、加載模型
from modelscope import AutoModelForCausalLM, AutoTokenizer
# 指定要加載的模型名稱
model_name = "/root/autodl-tmp/Qwen/Qwen2___5-7B-Instruct"
# 加載因果語言模型
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto", # 自動確定 PyTorch 的數(shù)據(jù)類型
device_map="auto" # 自動確定設(shè)備映射
)
# 加載分詞器
tokenizer = AutoTokenizer.from_pretrained(model_name)
加載如下:
3、定義提示消息
# 設(shè)置提示文本
prompt = "Give me a short introduction to artificial intelligence."
# 構(gòu)建包含系統(tǒng)角色和用戶角色的消息列表
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": prompt}
]
# 將消息列表應(yīng)用聊天模板進行處理,不進行分詞操作且添加生成提示
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
text
輸出:
'<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n<|im_start|>user\nGive me a short introduction to artificial intelligence.<|im_end|>\n<|im_start|>assistant\n'
4、分詞處理
對輸入文本進行分詞和張量轉(zhuǎn)換
# 將處理后的文本轉(zhuǎn)換為模型輸入張量,并移動到模型所在設(shè)備上
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
model_inputs
輸出:
5、生成文本
生成文本,再從生成的標記中去除輸入部分的標記
# 生成文本,設(shè)置最大新生成的標記數(shù)為 512
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)
]
generated_ids
?輸出:
6、解碼返回生成結(jié)果
# 將生成的標記解碼為文本,并跳過特殊標記
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
response
輸出:
'Certainly! Artificial Intelligence (AI) refers to the simulation of human intelligence in machines that are programmed to think, learn, and perform tasks that typically require human cognition. This includes activities such as visual perception, speech recognition, decision-making, and language translation.\n\nKey components of AI include:\n\n1. **Machine Learning**: A subset of AI where systems can automatically learn and improve from experience without being explicitly programmed.\n2. **Deep Learning**: A more advanced form of machine learning that uses neural networks with many layers to model and solve complex problems.\n3. **Natural Language Processing (NLP)**: The ability of computers to understand, interpret, and generate human language.\n4. **Computer Vision**: Enabling machines to interpret and understand the visual world, similar to how humans would.\n5. **Robotics**: Combining AI with robotics to create machines that can perform tasks autonomously or semi-autonomously.\n\nAI has numerous applications across various fields, including healthcare, finance, transportation, entertainment, and more. It continues to evolve rapidly, transforming industries and societies in profound ways.'
結(jié)語
在模型微調(diào)方面,可以使用ms-swift 進行微調(diào)。它作為魔搭社區(qū)官方提供的 LLM 工具箱,以其強大的功能支持著對 qwen2.5 的微調(diào)操作。通過 ms-swift,開發(fā)者能夠?qū)?qwen2.5 進行精細調(diào)整,使其更加貼合特定的應(yīng)用需求。而微調(diào)后的模型在推理過程中,更是展現(xiàn)出了高度的準確性和適應(yīng)性,為各種復(fù)雜任務(wù)的解決提供了有力保障。同時,ms-swift 廣泛支持 300 多個大語言模型和 80 多個多模態(tài)大模型的微調(diào)到部署,為開發(fā)者提供了豐富的選擇和廣闊的創(chuàng)新空間。
在模型部署方面,vLLM 部署和 ollama 部署猶如兩顆璀璨的明星,為開發(fā)者照亮了前行的道路。它們以其便捷性和高效性,使得 Qwen2.5 能夠在各種實際場景中得以順利應(yīng)用。無論是在企業(yè)的智能化生產(chǎn)中,還是在科研機構(gòu)的創(chuàng)新研究里,亦或是在日常生活的智能服務(wù)中,Qwen2.5 都能借助這些優(yōu)秀的部署方式發(fā)揮出巨大的價值。
本文轉(zhuǎn)載自??小兵的AI視界??,作者: 小兵 ????
