当前位置: 首页 > news >正文

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

首先,在InternStudio平台上创建开发机。
在这里插入图片描述

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

首先点击左上角图标,打开Terminal
在这里插入图片描述

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

创建虚拟环境

conda create -n langgpt python=3.10 -y

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

conda activate langgpt

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

# 安装一些必要的库
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.3pip 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
可以使用如下脚本下载模型:

from huggingface_hub import login, snapshot_download
import osos.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
运行下面的命令安装必要的软件:

apt-get install tmux

在这里插入图片描述

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

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 <窗口名> 命令来实现。

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

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 命令查看当前存在的会话窗口,然后选择一个合适的会话窗口进行附加。

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

conda activate langgpt

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

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代码测试:

from openai import OpenAIclient = 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获取项目,运行如下命令:

git clone -b camp3 https://github.com/InternLM/Tutorial.git

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

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

cd Tutorial/tools 

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

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 在连接到新的或更改过的服务器时不要进行严格的主机密钥检查。这通常用于自动化脚本,但不建议用于生产环境,因为它会降低安全性。

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/


http://www.mrgr.cn/news/77791.html

相关文章:

  • Rust学习(八):异常处理和宏编程:
  • Unity Lua方向的面试真题详解
  • Shell编程8
  • Git 多仓库提交用户信息动态设置
  • 探索复合物TPP-PEG-Heparin的特性;磷酸三苯酯-聚乙二醇-肝素的线粒体靶向性
  • 电子远勘在侦查中有什么作用?
  • 复习!!!
  • Spring |(二)IoC相关内容 | bean
  • Long noncoding RNAs and humandisease
  • 微服务即时通讯系统的实现(服务端)----(1)
  • 计算机视觉 1-8章 (硕士)
  • 动态内存管理
  • leetcode:112. 路径总和
  • AI+若依框架项目
  • el-tree 使用笔记
  • 【强化学习+组合优化】SAC + PointerNetwork 解决TSP问题
  • 常用数据结构详解
  • 【操作系统笔记】习题
  • 密码学11
  • 推荐一个基于协程的C++(lua)游戏服务器
  • Kubernetes的pod控制器
  • 大语言模型---什么是注意力机制?LlaMA 中注意力机制的数学定义
  • 002 MATLAB语言基础
  • 【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境
  • 华为OD机试真题---最短木板长度
  • 【AI日记】24.11.22 学习谷歌数据分析初级课程-第2/3课