書生·浦語2.5開源,推理能力再創新標桿

導讀

2024 年 7 月 3 日,上海人工智能實驗室與商湯科技聯合香港中文大學和復旦大學正式發布新一代大語言模型書?·浦語2.5(InternLM2.5)。相比上一代模型,InternLM2.5 有三項突出亮點:

  • 推理能力大幅提升,在部分維度上甚至超越十倍量級的 Llama3-70B;

  • 支持 1M tokens 上下文,能夠處理百萬字長文;

  • 具有強大的自主規劃和工具調用能力,比如可以針對復雜問題,搜索上百個網頁并進行整合分析。

InternLM2.5-7B 模型即日起開源可用,更大和更小的模型也將在近期發布開源。上海人工智能實驗室秉持“以持續的高質量開源賦能創新”理念,在為社區始終如一地提供高質量開源模型的同時,也將繼續堅持免費商用授權。

Github鏈接:https://github.com/InternLM/InternLM

**模型鏈接:**https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2_5-7b-chat

**書生·浦語主頁:**https://internlm.intern-ai.org.cn/

領先的推理能力

強大的推理能力是大模型通向通用人工智能的重要基礎,InternLM2.5 將推理能力作為模型最核心的能力進行優化,為復雜場景的應用落地提供了良好的基礎。

基于司南 OpenCompass 開源評測框架,研究團隊使用統一可復現的評測方法在多個推理能力權威評測集上進行了評測。相比上一代模型,InternLM2.5 在多個推理能力權威評測集上實現了大幅性能提升,尤其在由競賽問題構成的數學評測集 MATH 上更是提升100%,以 7B 參數達到了 60% 的準確率(達到 GPT-4 Turbo 1106 版本的水平),充分展示了模型在數學推理上的優異成績。

在這里插入圖片描述

100萬 Token 長文本支持,文檔對話系統全開源

在長文檔理解、復雜的智能體交互等應用場景中,模型的上下文長度支持有著更高的要求。InternLM2.5 提出了解決方案,將上下文長度從上一代模型 InternLM2 的 200K 提升到了 1M(約合 120 萬漢字),進一步釋放了模型在超長文本應用上的潛力。在模型的預訓練中,從自然語料中篩選出了 256K Token 長度的文本,同時為了避免語料類型過于單一而導致的域偏移,通過合成數據進行了補充,使得模型在擴展上下文的同時可以盡量保留其能力。

采用了業界流行的“大海撈針”來評估模型的長文信息召回內容,下圖顯示,InternLM 2.5 在 1M token 范圍內實現了幾乎完美的大海撈針召回,呈現了極強的長文處理能力。

在這里插入圖片描述

基于網絡信息高效解決復雜問題

針對需要大規模復雜信息搜索和整合的復雜問題場景,InternLM2.5 創新性地提出了 MindSearch 多智能體框架,模擬人的思維過程,引入了任務規劃、任務拆解、大規模網頁搜索、多源信息歸納總結等步驟,有效地整合網絡信息。其中,規劃器專注于任務的規劃、拆解和信息歸納,采用圖結構編程的方式進行規劃,并根據任務狀態進行動態拓展,搜索器負責發散式搜索并總結網絡搜索結果,使得整個框架能夠基于上百個網頁的信息進行篩選和瀏覽和整合。

在這里插入圖片描述

模型下載

SDK下載模型:

#模型下載
from modelscope import snapshot_download
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm2_5-7b-chat')

或者使用CLI下載

modelscope download --model=Shanghai_AI_Laboratory/internlm2_5-7b-chat --local_dir ./internlm2_5-7b-chat/

支持git clone下載

git clone https://www.modelscope.cn/Shanghai_AI_Laboratory/internlm2_5-7b-chat.git

04

模型推理

使用transformers推理:

import torch
from modelscope import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Shanghai_AI_Laboratory/internlm2_5-7b-chat", trust_remote_code=True)
# Set `torch_dtype=torch.float16` to load model in float16, otherwise it will be loaded as float32 and cause OOM Error.
model = AutoModelForCausalLM.from_pretrained("Shanghai_AI_Laboratory/internlm2_5-7b-chat", torch_dtype=torch.float16, trust_remote_code=True).cuda()
model = model.eval()
response, history = model.chat(tokenizer, "hello", history=[])
print(response)
# Hello! How can I help you today?
response, history = model.chat(tokenizer, "please provide three suggestions about time management", history=history)
print(response)

顯存占用:

在這里插入圖片描述

模型微調

本文介紹使用ms-swift對internlm2.5-7b-chat進行自我認知微調,并對微調前后模型進行推理、部署與評測。swift是魔搭社區官方提供的LLM工具箱,支持300+大語言模型和50+多模態大模型的微調、推理、量化、評估和部署。

swift開源地址:https://github.com/modelscope/swift

自我認知數據集: https://modelscope.cn/datasets/swift/self-cognition

如果需要使用其他數據集對internlm2.5-7b-chat進行微調,只需要修改 --dataset即可。自定義dataset支持傳入本地路徑、modelscope和huggingface中的dataset_id。文檔可以查看:https://github.com/modelscope/swift/blob/main/docs/source/LLM/%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%8E%E6%8B%93%E5%B1%95.md#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E9%9B%86

在開始微調之前,請確保您的環境已正確安裝

git clone https://github.com/modelscope/swift.git
cd swift
pip install -e .[llm]

微調腳本:

# Experimental environment: A10, 3090, V100, ...
# 22GB GPU memory
CUDA_VISIBLE_DEVICES=0 swift sft \--model_type internlm2_5-7b-chat \--dataset alpaca-zh#500 alpaca-en#500 self-cognition#500 \--logging_steps 5 \--max_length 2048 \--learning_rate 1e-4 \--output_dir output \--lora_target_modules ALL \--model_name 小黃 'Xiao Huang' \--model_author 魔搭 ModelScope \# Experimental environment: A10, 3090, V100, ...
# 4 * 20GB GPU memory
# Deepspeed-ZeRO2
NPROC_PER_NODE=4 CUDA_VISIBLE_DEVICES=0,1,2,3 \
swift sft \--model_type internlm2_5-7b-chat \--dataset alpaca-zh#500 alpaca-en#500 self-cognition#500 \--logging_steps 5 \--max_length 2048 \--learning_rate 1e-4 \--output_dir output \--lora_target_modules ALL \--model_name 小黃 'Xiao Huang' \--model_author 魔搭 ModelScope \--deepspeed default-zero2

微調顯存消耗:

在這里插入圖片描述

微調過程的loss可視化:

在這里插入圖片描述

微調后推理腳本如下,這里的ckpt_dir需要修改為訓練生成的last checkpoint文件夾。我們可以使用vLLM對merge后的checkpoint進行推理加速。

# Experimental environment: A10, 3090, V100, ...
CUDA_VISIBLE_DEVICES=0 swift export \--ckpt_dir output/internlm2_5-7b-chat/vx-xxx/checkpoint-xxx \--merge_lora true# 使用vLLM進行推理加速
CUDA_VISIBLE_DEVICES=0 swift infer \--ckpt_dir output/internlm2_5-7b-chat/vx-xxx/checkpoint-xxx-merged \--infer_backend vllm --max_model_len 4096

微調后模型對驗證集進行推理的示例:

在這里插入圖片描述

對自我認知微調前后的模型進行評測:

# Experimental environment: A100
# 評測后端由llmuses庫提供: https://github.com/modelscope/eval-scope
# 原始模型
CUDA_VISIBLE_DEVICES=0 swift eval \--model_type internlm2_5-7b-chat \--eval_dataset arc ceval gsm8k --eval_backend Native \--infer_backend vllm 
# 微調后
CUDA_VISIBLE_DEVICES=0 swift eval \--ckpt_dir output/internlm2_5-7b-chat/vx-xxx/checkpoint-xxx-merged \--eval_dataset arc ceval gsm8k --eval_backend Native \--infer_backend vllm

Model

arc

ceval

gsm8k

原始模型

0.843

0.7452

0.8173

微調后模型

0.8404

0.7489

0.8082

可以看到,自我認知微調會對模型的評測結果產生略微影響,使用更好的混合通用數據集將會緩解這一現象。

模型部署

使用lmdeploy部署

pip install lmdeploy

使用python代碼本地批量推理

import lmdeploy
pipe = lmdeploy.pipeline("/mnt/workspace/internlm2_5-7b-chat")
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)

也可以使用一行代碼發布OpenAI格式服務

lmdeploy serve api_server /mnt/workspace/internlm2_5-7b-chat --model-name internlm2_5-7b-chat --server-port 23333 

接口調用方式:

curl http://localhost:23333/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "internlm2_5-7b-chat","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Introduce deep learning to me."}]}'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42719.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42719.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VUE與React的生命周期對比

前言 在前端開發中,Vue和React是兩個非常流行的JavaScript框架,它們各自有著獨特的生命周期機制。了解并熟練掌握這些生命周期,對于開發高效、可維護的前端應用至關重要。本文將詳細對比Vue和React的生命周期,幫助開發者更好地理…

Python | Leetcode Python題解之第222題完全二叉樹的節點個數

題目: 題解: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def countNodes(self,…

好玩的珠璣妙算-加作弊帶概率空間+日志存儲240705mindMaster

Python代碼 import random import time import datetimeNUM_DIGITS 10 #NUM_NON_ZERO_DIGITS 9failFlag 0class Mastermind:def __init__(self, code_length, max_attempts, secret01code, game_id): # def __init__(self, code_length, max_attempts):self.code_length…

【Elasticsearch】Elasticsearch倒排索引詳解

文章目錄 📑引言一、倒排索引簡介二、倒排索引的基本結構三、Elasticsearch中的倒排索引3.1 索引和文檔3.2 創建倒排索引3.3 倒排索引的存儲結構3.4 詞典和倒排列表的優化 四、倒排索引的查詢過程4.1 過程4.2 示例 五、倒排索引的優缺點5.1 優點5.2 缺點 六、倒排索…

【Excel】求和帶文字的數據

目錄標題 1. 給出樣例2. CtrlE3. CtrlH → A替換為 → 全部替換 1. 給出樣例 2. CtrlE 3. CtrlH → A替換為 → 全部替換

算法期末函數題

R6-1 可重復選擇的組合數問題 【考核知識點】可重復選擇的組合計數 【問題描述】 有n個不同元素&#xff08;1<n<20&#xff09;&#xff0c;每個元素可以選多次&#xff0c;一共需要選出k個元素出來&#xff08;1<k<20&#xff09;&#xff0c;問有多少種選取的…

監控易V7.6.6.15升級詳解2:設備管理功能

隨著企業IT架構的日益復雜&#xff0c;對設備管理的需求也在不斷提升。為了滿足廣大用戶對于設備管理的高效、精準需求&#xff0c;我們榮幸地宣布監控易系統已完成了一次重要的版本升級。本次升級不僅優化了原有功能&#xff0c;還新增了一系列實用特性&#xff0c;旨在為用戶…

仿qq音樂播放微信小程序模板源碼

手機qq音樂應用小程序&#xff0c;在線音樂播放器微信小程序網頁模板。包含&#xff1a;音樂歌曲主頁、推薦、排行榜、搜索、音樂播放器、歌單詳情等。 仿qq音樂播放微信小程序模板源碼

【ubuntu自啟shell腳本】——在ubuntu中如何使用系統自帶的啟動應用程序設置開機自啟自己的本地shell腳本

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、設置開機自啟shell腳本1.使用 gnome-session-properties2.測試的shell例程代碼 總結 前言 在Ubuntu系統中設置開機自啟腳本是一種重要的自動化方法。開機自…

YOLO-World實時開集檢測論文閱讀

論文&#xff1a;《YOLO-World: Real-Time Open-Vocabulary Object Detection》 代碼&#xff1a;https://github.com/AILab-CVC/YOLO-World 1.Abstract 我們介紹了YOLO World&#xff0c;這是一種創新的方法&#xff0c;通過在大規模數據集上進行視覺語言建模和預訓練&#…

js之彈性布局使用方法

彈性布局&#xff08;Flexbox&#xff09;是一種現代化的 CSS 布局方法&#xff0c;它可以讓您更方便地創建響應式和動態布局。在本篇文檔中&#xff0c;我們將介紹彈性布局的基本概念以及如何在項目中使用它。 一、基本概念 容器&#xff08;Container&#xff09;&#xff…

WPF中邏輯樹和視覺樹

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;“邏輯樹”&#xff08;Logical Tree&#xff09;和“可視樹”&#xff08;Visual Tree&#xff09;是兩個重要的概念&#xff0c;它們代表了不同的對象層次結構&#xff0c;用于描述應用程序的組織…

洛谷 [SNCPC2024] 寫都寫了,交一發吧 題解

分析 顯然&#xff0c;兩個相同的數去按位與的結果還是該數。 由于一個代碼可以提交多次&#xff0c;那么可以把得分最高的代碼提交兩次&#xff0c;這樣的得分就是這個代碼的得分&#xff0c;很明顯&#xff0c;這樣是最優的。 Code #include<iostream> using names…

STM32微控制器的SPI存儲解決方案:W25Q64 Flash存儲器深度應用

摘要 在嵌入式系統設計中&#xff0c;存儲解決方案對于數據的持久化至關重要。W25Q64 Flash存儲器以其高效的存儲能力和與SPI總線的兼容性&#xff0c;成為STM32微控制器項目中的優選。本文將深入探討STM32微控制器的SPI存儲解決方案&#xff0c;重點介紹W25Q64 Flash存儲器的…

vue3+antd 實現點擊按鈕彈出對話框

格式1&#xff1a;確認對話框 按鈕&#xff1a; 點擊按鈕之后&#xff1a; 完整代碼&#xff1a; <template><div><a-button click"showConfirm">Confirm</a-button></div> </template> <script setup> import {Mod…

如何查看程序是否在運行-Linux

1.命令 ps aux | grep RiboCode2_manythreads.py2.結果&#xff1a; 2020200 1063124 99.8 19.2 56105444 50796184 pts/0 Sl 18:40 114:36 python RiboCode2_manythreads.py -a ./RiboCode_annot -c config15d.txt -o ./ORFs_15d_final_result --gtf -t 15從輸出結果可以看出…

階段三:項目開發---大數據開發運行環境搭建:任務4:安裝配置Spark集群

任務描述 知識點&#xff1a;安裝配置Spark 重 點&#xff1a; 安裝配置Spark 難 點&#xff1a;無 內 容&#xff1a; Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop …

Bean的管理

1.主動獲取Bean spring項目在需要時&#xff0c;會自動從IOC容器中獲取需要的Bean 我們也可以自己主動的得到Bean對象 &#xff08;1&#xff09;獲取bean對象&#xff0c;首先獲取SpringIOC對象 private ApplicationContext applicationContext //IOC容器對象 (2 )方法…

昇思25天學習打卡營第13天 | ShuffleNet圖像分類

ShuffleNet網絡介紹 ShuffleNetV1是曠視科技提出的一種計算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一樣主要應用在移動端&#xff0c;所以模型的設計目標就是利用有限的計算資源來達到最好的模型精度。ShuffleNetV1的設計核心是引入了兩種操作&#xff1a;Pointw…

ExcelVBA運用Excel的【條件格式】(二)

ExcelVBA運用Excel的【條件格式】&#xff08;二&#xff09;前面知識點回顧1. 訪問 FormatConditions 集合 Range.FormatConditions2. 添加條件格式 FormatConditions.Add 方法語法表達式。添加 (類型、 運算符、 Expression1、 Expression2)3. 修改或刪除條件格式4. …