浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)

首先,在InternStudio平台上创建开发机。

创建成功后点击进入开发机打开WebIDE。进入后在WebIDE的左上角有三个logo,依次表示JupyterLab、Terminal和Code Server,我们使用Terminal就行。(JupyterLab可以直接看文件夹)

首先点击左上角图标,打开Terminal

运行如下脚本创建虚拟环境:

创建虚拟环境

bash 复制代码
conda create -n langgpt python=3.10 -y

运行下面的命令,激活虚拟环境:

bash 复制代码
conda activate langgpt

之后的操作都要在这个环境下进行。激活环境后,安装必要的Python包,依次运行下面的命令:

bash 复制代码
# 安装一些必要的库
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y

# 安装其他依赖
pip install transformers==4.43.3

pip install streamlit==1.37.0
pip install huggingface_hub==0.24.3
pip install openai==1.37.1
pip install lmdeploy==0.5.2

如果使用intern-studio开发机,可以直接在路径/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b下找到模型

如果不使用开发机,可以从huggingface上获取模型,地址为:https://huggingface.co/internlm/internlm2-chat-1_8b

可以使用如下脚本下载模型:

bash 复制代码
from huggingface_hub import login, snapshot_download
import os
 
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
 
login(token="your_access_token")
models = ["internlm/internlm2-chat-1_8b"]
for model in models:
    try:
        snapshot_download(repo_id=model,local_dir="langgpt/internlm2-chat-1_8b")
    except Exception as e:
        print(e)
        Pass

本文使用intern-studio开发机

部署模型为OpenAI server

运行下面的命令安装必要的软件:

bash 复制代码
apt-get install tmux

由于服务需要持续运行,需要将进程维持在后台,所以这里使用tmux软件创建新的命令窗口。运行如下命令创建窗口:

bash 复制代码
tmux new -t langgpt

tmux new -t langgpt 是 Tmux(Terminal Multiplexer)命令行工具的一个命令,它的作用是在一个新的窗口中启动一个会话,并且该会话的名称为 langgpt。 具体来说: - tmux new 表示创建一个新的会话窗口。 - -t langgpt 表示给这个新的会话窗口指定一个名字 langgpt。 这个命令通常用于在终端中同时运行多个会话,可以通过不同的窗口来切换不同的任务或环境。例如,在开发过程中,你可能需要在同一个终端中同时运行编译器、编辑器和终端模拟器等多个应用,这时就可以使用 Tmux 来管理这些会话窗口。 当你执行 tmux new -t langgpt 命令后,Tmux 会创建一个新的窗口,并且将你放到这个新的窗口中,同时这个窗口的名称为 langgpt。你可以在这个窗口中执行任何命令,而不会影响其他的窗口。当你想要切换到其他的窗口时,可以使用 tmux switch-window 或者 tmux switch -t <窗口名> 命令来实现。

创建完成后,运行下面的命令进入新的命令窗口(首次创建自动进入不用再输入,之后进入的话需要运行下面的代码):

bash 复制代码
tmux a -t langgpt

tmux a -t langgpt 是 Tmux(Terminal Multiplexer)命令行工具的另一个命令,它的作用是附加(attach)到名为 langgpt 的会话中。 具体来说: - tmux a 表示附加到一个已存在的会话窗口。 - -t langgpt 表示附加到名为 langgpt 的会话窗口。 当你执行 tmux a -t langgpt 命令后,Tmux 会将你附加到名为 langgpt 的会话窗口中,这样你就可以继续在该会话窗口中的命令行中进行操作。如果你之前已经通过 tmux new -t langgpt 命令创建了这个会话窗口,那么使用 tmux a -t langgpt 命令就可以回到这个窗口,继续之前的工作。 需要注意的是,如果你尝试附加到一个不存在的会话窗口,或者当前已经附加到了一个会话窗口,那么 Tmux 会提示你无法附加或者你已经附加到了一个会话窗口。在这种情况下,你可以使用 tmux list-sessions 命令查看当前存在的会话窗口,然后选择一个合适的会话窗口进行附加。

运行下面的命令,激活刚创建的虚拟环境:

bash 复制代码
conda activate langgpt

使用LMDeploy进行部署,参考如下命令:

bash 复制代码
CUDA_VISIBLE_DEVICES=0 lmdeploy serve api_server /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --server-port 23333 --api-keys internlm

服务启动完成后,可以按Ctrl+B进入tmux的控制模式,然后按D退出这个窗口返回先前的窗口.

可以用下面的python代码测试:

bash 复制代码
from openai import OpenAI
 
client = OpenAI(
    api_key = "internlm",
    base_url = "http://0.0.0.0:23333/v1"
)
 
response = client.chat.completions.create(
    model=client.models.list().data[0].id,
    messages=[
        {"role": "system", "content": "请介绍一下你自己"}
    ]
)
 
print(response.choices[0].message.content)

图形化界面调用

InternLM部署完成后,可利用提供的chat_ui.py创建图形化界面,在实战营项目的tools项目中。

首先,从Github获取项目,运行如下命令:

bash 复制代码
git clone -b camp3 https://github.com/InternLM/Tutorial.git

命令解释:下载camp3分支的代码

下载完成后,运行如下命令进入项目所在的路径:

bash 复制代码
cd Tutorial/tools 

进入正确路径后,运行如下脚本运行项目:

bash 复制代码
python -m streamlit run chat_ui.py 

注意,下面是在本地电脑里的powershell里运行,不是在上述的terminal中运行了:

ssh -p {ssh端口,从InternStudio获取} root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no

ssh:这是安全外壳协议的命令,用于启动一个安全会话。

-p 36356:指定连接到远程服务器的端口。默认的 SSH 端口是 22,但这里指定了 36356 作为连接端口。

root@ssh.intern-ai.org.cn:这是指定要连接的远程服务器的用户和地址。这里,用户是 root,服务器地址是 ssh.intern-ai.org.cn

-L 7860:127.0.0.1:8501:这是本地端口转发选项。它告诉 SSH 将本地机器(客户端)的端口 7860 转发到远程服务器上的 127.0.0.1 地址的端口 8501。这意味着任何连接到本地机器端口 7860 的连接都会被转发到远程服务器上的端口 8501。

-o StrictHostKeyChecking=no:这是一个 SSH 配置选项,告诉 SSH 在连接到新的或更改过的服务器时不要进行严格的主机密钥检查。这通常用于自动化脚本,但不建议用于生产环境,因为它会降低安全性。

bash 复制代码
ssh -p 36356 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no

如果未配置开发机公钥,还需要输入密码,从InternStudio获取。上面这一步是将开发机上的8501(web界面占用的端口)映射到本地机器的端口,之后可以访问http://localhost:7860/

相关推荐
LZXCyrus2 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
我感觉。20 分钟前
【机器学习chp4】特征工程
人工智能·机器学习·主成分分析·特征工程
YRr YRr28 分钟前
深度学习神经网络中的优化器的使用
人工智能·深度学习·神经网络
DieYoung_Alive28 分钟前
一篇文章了解机器学习(下)
人工智能·机器学习
夏沫的梦30 分钟前
生成式AI对产业的影响与冲击
人工智能·aigc
goomind42 分钟前
YOLOv8实战木材缺陷识别
人工智能·yolo·目标检测·缺陷检测·pyqt5·木材缺陷识别
只怕自己不够好42 分钟前
《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》
人工智能·opencv·计算机视觉
幻风_huanfeng43 分钟前
人工智能之数学基础:线性代数在人工智能中的地位
人工智能·深度学习·神经网络·线性代数·机器学习·自然语言处理
嵌入式大圣44 分钟前
嵌入式系统与OpenCV
人工智能·opencv·计算机视觉
ZOMI酱2 小时前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构