1. 部署InternLM2-Chat-1.8B 模型進行智能對話
1.1配置環境
創建開發機
Intern Studio 官網網址:https://studio.intern-ai.org.cn/
進入官網后,選擇創建開發機,填寫 開發機名稱 后,點擊 選擇鏡像 使用 Cuda11.7-conda 鏡像,然后在資源配置中,使用 10% A100 * 1 的選項,立即創建開發機器。
然后機器會排隊創建(等待的有點久嗷,不知道為啥)。
配置環境
進入開發機在terminal后輸入環境配置命令如下:
studio-conda -o internlm-base -t demo
# 與 studio-conda 等效的配置方案
# conda create -n demo python==3.10 -y
# conda activate demo
# conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
激活環境
conda activate demo
安裝其他依賴包:
pip install huggingface-hub==0.17.3
pip install transformers==4.34
pip install psutil==5.9.8
pip install accelerate==0.24.1
pip install streamlit==1.32.2
pip install matplotlib==3.8.3
pip install modelscope==1.9.5
pip install sentencepiece==0.1.99
1.2 下載 InternLM2-Chat-1.8B 模型
創建文件夾
mkdir -p /root/demo
touch /root/demo/cli_demo.py #touch主要用于創建空文件或設置文件的時間戳
touch /root/demo/download_mini.py
cd /root/demo
在download_mini.py中復制以下代碼:
import os
from modelscope.hub.snapshot_download import snapshot_download# 創建保存模型目錄
os.system("mkdir /root/models")# save_dir是模型保存到本地的目錄
save_dir="/root/models"snapshot_download("Shanghai_AI_Laboratory/internlm2-chat-1_8b", cache_dir=save_dir, revision='v1.1.0')
然后運行該文件以下載模型參數文件。
1.3 運行cli_demo
在cli_demo.py中復制以下內容,然后運行
import torch
from transformers import AutoTokenizer, AutoModelForCausalLMmodel_name_or_path = "/root/models/Shanghai_AI_Laboratory/internlm2-chat-1_8b"tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True, device_map='cuda:0')
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='cuda:0')
model = model.eval()system_prompt = """You are an AI assistant whose name is InternLM (書生·浦語).
- InternLM (書生·浦語) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能實驗室). It is designed to be helpful, honest, and harmless.
- InternLM (書生·浦語) can understand and communicate fluently in the language chosen by the user such as English and 中文.
"""messages = [(system_prompt, '')]print("=============Welcome to InternLM chatbot, type 'exit' to exit.=============")while True:input_text = input("\nUser >>> ")input_text = input_text.replace(' ', '')if input_text == "exit":breaklength = 0for response, _ in model.stream_chat(tokenizer, input_text, messages):if response is not None:print(response[length:], flush=True, end="")length = len(response)
運行效果如下:
有點怪啊,最后總是有一句總結句>_<
2.部署實戰營優秀作品 八戒-Chat-1.8B模型
2.1簡介
八戒-Chat-1.8B 是利用《西游記》劇本中所有關于豬八戒的臺詞和語句以及 LLM API 生成的相關數據結果,進行全量微調得到的豬八戒聊天模型。作為 Roleplay-with-XiYou 子項目之一,八戒-Chat-1.8B 能夠以較低的訓練成本達到不錯的角色模仿能力,同時低部署條件能夠為后續工作降低算力門檻。
項目鏈接:https://www.modelscope.cn/models/JimmyMa99/BaJie-Chat-mini/summary
2.2環境配置
基本環境和上一節一致,只需要激活
conda activate demo
從git倉庫拉取
cd /root/
git clone https://gitee.com/InternLM/Tutorial -b camp2
# git clone https://github.com/InternLM/Tutorial -b camp2
cd /root/Tutorial
2.3下載運行Demo
下載
python /root/Tutorial/helloworld/bajie_download.py
運行
streamlit run /root/Tutorial/helloworld/bajie_chat.py --server.address 127.0.0.1 --server.port 6006
端口映射
在powershell中運行下述命令
# 從本地使用 ssh 連接 studio 端口
# 將下方端口號 38374 替換成自己的端口號
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374
這個38374端口號可以在SSH連接中查看,然后輸入下方的密碼(我似乎沒有輸入密碼,但是仍然可以用?)
打開 http://127.0.0.1:6006 后,結果如下:
3.實戰:使用 Lagent 運行 InternLM2-Chat-7B 模型
3.1 初步介紹 Lagent 相關知識
Lagent 是一個輕量級、開源的基于大語言模型的智能體(agent)框架,支持用戶快速地將一個大語言模型轉變為多種類型的智能體,并提供了一些典型工具為大語言模型賦能。它的整個框架圖如下:
Lagent的特點:
- 流式輸出:提供 stream_chat 接口作流式輸出,本地就能演示酷炫的流式 Demo。
- 接口統一,設計全面升級,提升拓展性,包括:
Model : 不論是 OpenAI API, Transformers 還是推理加速框架 LMDeploy 一網打盡,模型切換可以游刃有余;
Action: 簡單的繼承和裝飾,即可打造自己個人的工具集,不論 InternLM 還是 GPT 均可適配;
Agent:與 Model 的輸入接口保持一致,模型到智能體的蛻變只需一步,便捷各種 agent 的探索實現; - 文檔全面升級,API 文檔全覆蓋。
3.2配置環境
激活環境
conda activate demo
切換目錄
cd /root/demo
拉取代碼庫
git clone https://gitee.com/internlm/lagent.git
# git clone https://github.com/internlm/lagent.git
cd /root/demo/lagent
git checkout 581d9fb8987a5d9b72bb9ebd37a95efd47d479ac
pip install -e . # 源碼安裝
3.3 使用 Lagent 運行 InternLM2-Chat-7B 模型為內核的智能體
切換路徑
cd /root/demo/lagent
構造軟鏈接
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b
打開 lagent 路徑下 examples/internlm2_agent_web_demo_hf.py 文件,并修改對應位置 (71行左右) 代碼,修改運行demo中的模型路徑為本地路徑
# 其他代碼...
value='/root/models/internlm2-chat-7b'
# 其他代碼...
運行
streamlit run /root/demo/lagent/examples/internlm2_agent_web_demo_hf.py --server.address 127.0.0.1 --server.port 6006
端口映射,同上一節
結果展示如下,(未勾選數據分析)
勾選數據分析
似乎沒什么區別?
4.實戰:實踐部署 浦語·靈筆2 模型
4.1 初步介紹 XComposer2 相關知識
浦語·靈筆2 是基于 書生·浦語2 大語言模型研發的突破性的圖文多模態大模型,具有非凡的圖文寫作和圖像理解能力,在多種應用場景表現出色,總結起來其具有:
- 自由指令輸入的圖文寫作能力: 浦語·靈筆2 可以理解自由形式的圖文指令輸入,包括大綱、文章細節要求、參考圖片等,為用戶打造圖文并貌的專屬文章。生成的文章文采斐然,圖文相得益彰,提供沉浸式的閱讀體驗。
- 準確的圖文問題解答能力:浦語·靈筆2 具有海量圖文知識,可以準確的回復各種圖文問答難題,在識別、感知、細節描述、視覺推理等能力上表現驚人。
- 杰出的綜合能力: 浦語·靈筆2-7B 基于 書生·浦語2-7B 模型,在13項多模態評測中大幅領先同量級多模態模型,在其中6項評測中超過 GPT-4V 和 Gemini Pro。
可以看到該模型在開源模型中效果非常好,在閉源模型和開源SOTA中也表現強勁。
4.2 環境配置
啟動環境
conda activate demo
補充安裝依賴包
pip install timm==0.4.12 sentencepiece==0.1.99 markdown2==2.4.10 xlsxwriter==3.1.2 gradio==4.13.0 modelscope==1.9.5
拉取InternLM-XComposer 代碼
cd /root/demo
git clone https://gitee.com/internlm/InternLM-XComposer.git
# git clone https://github.com/internlm/InternLM-XComposer.git
cd /root/demo/InternLM-XComposer
git checkout f31220eddca2cf6246ee2ddf8e375a40457ff626
創建軟鏈接
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-7b /root/models/internlm-xcomposer2-7b
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-7b /root/models/internlm-xcomposer2-vl-7b
4.3圖文寫作實戰
啟動InternLM-XComposer:
cd /root/demo/InternLM-XComposer
python /root/demo/InternLM-XComposer/examples/gradio_demo_composition.py \
--code_path /root/models/internlm-xcomposer2-7b \
--private \
--num_gpus 1 \
--port 6006
記得開端口映射
實現效果如下
4.4圖片理解實戰
運行InternLM-XComposer2-vl
conda activate democd /root/demo/InternLM-XComposer
python /root/demo/InternLM-XComposer/examples/gradio_demo_chat.py \
--code_path /root/models/internlm-xcomposer2-vl-7b \
--private \
--num_gpus 1 \
--port 6006
效果展示: