浦语提示词工程实践(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.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
可以使用如下脚本下载模型:

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
运行下面的命令安装必要的软件:

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

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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘

1 问题描述 我在vscode下面编写python程序&#xff0c;这个程序是在一个英伟达anoconda环境下的项目。之前能运行能调试&#xff0c;最近发现只能运行ctlf5&#xff0c;但是使用f5进行调试时&#xff0c;报错“File “c:\Users\86137.vscode\extensions\ms-python.debugpy-202…

订单日记为“惠采科技”提供全方位的进销存管理支持

感谢温州惠采科技有限责任公司选择使用订单日记&#xff01; 温州惠采科技有限责任公司&#xff0c;成立于2024年&#xff0c;位于浙江省温州市&#xff0c;是一家以从事销售电气辅材为主的企业。 在业务不断壮大的过程中&#xff0c;想使用一种既能提升运营效率又能节省成本…

应用|“华院计算数智人在第一财经的应用”案例入选《2024年人工智能先锋案例集》

华院计算技术&#xff08;上海&#xff09;股份有限公司&#xff08;以下简称“华院计算”&#xff09;的 “华院计算数智人在第一财经《秒懂金融》及《新春特别节目》应用”案例在300余个案例申报中脱颖而出&#xff0c;入选中国人工智能产业发展联盟《2024年人工智能先锋案例…

eduSRC挖洞思路

声明 学习视频来自 B 站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 ✍&#x1f3fb;作者简介&#xff1a;致…

86汇编-数据串的输出

在 86 汇编语言中&#xff0c;输出数据串&#xff08;例如字符串&#xff09;的方式通常依赖于操作系统和环境。对于 DOS 操作系统&#xff0c;常见的做法是使用 BIOS 中断或 DOS 中断。这里将展示如何在 DOS 环境下使用 86 汇编语言输出一个字符串。 使用 DOS 中断 21h 输出字…

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …

【2024 Optimal Control 16-745】Ubuntu22.04 安装Julia

找不到Julia 内核 下载Julia curl -fsSL https://install.julialang.org | sh官网下载&#xff1a;Julia 安装 IJulia 打开 Julia REPL&#xff08;在终端中输入 julia&#xff09;并执行以下命令安装 IJulia&#xff1a; using Pkg Pkg.add("IJulia")这将为 Ju…

STM32F103系统时钟配置

时钟是单片机运行的基础&#xff0c;时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏&#xff0c;决定CPU速率&#xff0c;像人的心跳一样 只有有了心跳&#xff0c;人才能做其他的事情&#xff0c;而单片机有了时钟&#xff0c;才能够运行执行指令&#x…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Elasticsearch 是…

Hive分桶超详细!!!

1、分桶的意义 数据分区可能导致有些分区,数据过多&#xff0c;有些分区,数据极少。分桶是将数据集分解为若干部分(数据文件)的另一种技术。 分区和分桶其实都是对数据更细粒度的管理。当单个分区或者表中的数据越来越大&#xff0c;分区不能细粒度的划分数据时&#xff0c;我…

Feed流系统重构:架构篇

重构对我而言&#xff0c;最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构&#xff0c;那时系统常因超时引发用户投诉。接手任务时&#xff0c;我既激动又紧张&#xff0c;连续两天几乎废寝忘食地编码。结果令人振奋&#xff0c;算奖时间从一小时大幅缩短至十分钟。…

数据结构第一讲

数据结构定义 算法的定义 什么是好算法&#xff1f; 空间复杂度 时间复杂度 例子1 打印1到N之间的正整数 有递归和循环两种方法实现。 但是在数字变大后&#xff0c;递归的方法会导致内存占用过多而崩溃。 而循环则不会 例子2 写程序给定多项式在X处的值 从里往外算的算…

Leetcode226. 翻转二叉树(HOT100)+Leetcode221. 最大正方形(HOT100)

链接 题解&#xff1a; 本题是要镜像反转二叉树&#xff0c;相当于从中间一分&#xff0c;然后把左子树和右子树对调&#xff0c;但又不是简单的对调&#xff0c;还要继续反转子树的子树&#xff0c;所以要用递归。 我们特判root是否为空&#xff08;否则出现nullptr->nul…

Jenkins + gitee 自动触发项目拉取部署(Webhook配置)

目录 前言 Generic Webhook Trigger 插件 下载插件 ​编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建&#xff0c;本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目&#xff1b; Generic Webhook Trigger 插件 实现代码推送后&#xff0c;触…

Dubbo源码解析-服务调用(七)

一、服务调用流程 服务在订阅过程中&#xff0c;把notify 过来的urls 都转成了invoker&#xff0c;不知道大家是否还记得前面的rpc 过程&#xff0c;protocol也是在服务端和消费端各连接子一个invoker&#xff0c;如下图&#xff1a; 这张图主要展示rpc 主流程&#xff0c;消费…

Spring 框架的介绍(Java EE 学习笔记02)

Spring致力于解决Java EE应用中的各种问题&#xff0c;对于一个Java开发者来说&#xff0c;Spring框架的熟练使用是必备的技能之一。Spring具有良好的设计和分层结构&#xff0c;它克服了传统重量型框架臃肿、低效的劣势&#xff0c;大大简化了项目开发中的技术复杂性。 ​ 什…

基于YOLOv8深度学习的智慧考场考试防作弊行为检测系统设计与实现(PyQt5界面+数据集+训练代码)

随着教育领域的数字化和智能化发展&#xff0c;考试中的作弊行为已成为影响考试公平性和效率的重要问题。为了解决这一问题&#xff0c;本研究设计并实现了一种基于YOLOv8深度学习模型的智慧考场考试防作弊行为检测系统。系统采用YOLOv8算法对考场中的视频图像数据进行实时分析…

Android 天气APP(三十七)新版AS编译、更新镜像源、仓库源、修复部分BUG

上一篇&#xff1a;Android 天气APP&#xff08;三十六&#xff09;运行到本地AS、更新项目版本依赖、去掉ButterKnife 新版AS编译、更新镜像源、仓库源、修复部分BUG 前言正文一、更新镜像源① 腾讯源③ 阿里源 二、更新仓库源三、修复城市重名BUG四、地图加载问题五、源码 前…

掌握 Spring 事务管理:深入理解 @Transactional 注解

在业务方法上使用Transactional开启声明式事务时&#xff0c;很有可能由于使用方式有误&#xff0c;导致事务没有生效。 环境准备 表结构 CREATE TABLE admin (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) …

Docker Seata分布式事务保护搭建 DB数据源版搭建 结合Nacos服务注册

介绍 Seata&#xff08;Simple Extensible Autonomous Transaction Architecture&#xff09;是一个开源的分布式事务解决方案&#xff0c;旨在为微服务架构中的分布式系统提供事务管理支持。Seata 通过提供全局事务管理&#xff0c;帮助开发者在分布式环境中保持数据一致性 …