【学习心得】算力云平台上的大模型部署并实现远程调用

以AutoDL算力云平台为例,部署国产开源ChatGLM3b模型。

一、准备工作

(1)准备一台算力服务器

首先,进入AutoDL官网的算力时长选择算力服务器资源。

创建好后会自动跳转控制台的“容器实例”界面,稍等片刻后选择“快捷工具 > JupyterLab”开始部署。

通过jupyter lab的形式远程访问算力服务器后点击“终端”。

(2)准备开源大模型的部署环境 

你想部署哪个大模型就事先去GitHub或者Hugging face找到代码仓库,然后在终端中克隆项目,本文以ChatGLM3为例。

THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型icon-default.png?t=O83Ahttps://github.com/THUDM/ChatGLM3

如果你按照本文的方式,通过Github来进拉取项目的话,还必须开启一下学术资源加速。输入命令开启学术资源加速(此方法只能用在AutoDL中)

 

在终端中输入命令进行项目克隆。

# 开启学术加速
source /etc/network_turbo# 克隆ChatGLM3的项目仓库
git clone https://github.com/THUDM/ChatGLM3.git# 关闭学术加速
unset http_proxy && unset https_proxy

使用conda命令来创建一个虚拟环境。

conda create -n glm3_env python=3.10

创建虚拟环境成功,记得先初始化conda再激活进入虚拟环境。

# 初始化conda
conda init# 进入刚刚创建好的虚拟环境
conda activate glm3_env

进入项目路径后,更新一下python的pip包,为安装requirements.txt中的环境依赖库做准备。

# 进入ChatGLM3大模型的项目路径
cd ChatGLM3/# 更新一下pip包
pip install --upgrade pip

输入命令安装所需的库,这个过程比较久有很多的东西需要下载,耐心等待。

pip install -r requirements.txt

如果安装环境依赖包的过程中失败了,重新执行一次上面这个命令就好。 

二、下载模型

我们把大模型下载到指定的位置,比如autodl-tmp路径下。所以先进入这个路径,然后更新一下apt软件包管理工具,并下载git-lfs扩展。

AutoDL的目录名称速度说明
/系统盘一般实例关机数据不会丢失,可存放代码等。会随保存镜像一起保存。
/root/autodl-tmp数据盘实例关机数据不会丢失,可存放读写IO要求高的数据。但不会随保存镜像一起保存(所以我们把模型下载到这里面)
# 进入想要存放下载下来的大模型的路径中
cd /root/autodl-tmp# 更新apt软件包
sudo apt update# 更新软件包的目的是为了下载安装git-lfs
sudo apt-get install git-lfs

补充说明一下什么是git-lfs?Git Large File Storage (LFS) 是一个 Git 扩展,用于管理大文件,如图像、视频、大型数据集、二进制文件等(在本文中就是GLM3模型)。这些文件通常不适合直接存储在 Git 仓库中,因为它们会导致仓库变得非常庞大,影响性能和版本控制的效率。Git LFS 通过将大文件的实际内容存储在远程服务器上,而在本地仓库中只保留指向这些文件的指针,从而解决了这些问题。

之前我们去了国外的github去下载ChatGLM3的项目路径需要打开学术资源加速,现在我们去下载ChatGLM模型,如果是从hugging face上下载,那么也许要打开学术资源加速。但我现在演示去魔塔社区下载,因此就不需要加速了。直接输入命令进行模型下载。

git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

 进入刚刚git clone过来的chatglm3-6b目录中,使用git lfs pull命令拉取模型文件。

# 进入模型存放路径
cd /root/autodl-tmp/chatglm3-6b# 下载模型
git lfs pull

然后就是耐心等待模型下载完成。

三、验证模型是否部署成功

ChatGLM3的项目仓库中自带了demo文件可以帮助开发者快速测试一下模型是否部署成功。我只需要找到对应文件夹下的demo文件执行即可。

(1)命令行CLI测试

# 进入存放demo的路径下
cd /root/ChatGLM3/basic_demo

 将cli_demo.py代码中的模型路径换成刚刚自己下载保存模型的路径。

在终端运行命令启动cli_demo.py测试模型是否部署成功。

# 在cli_demo.py文件所在路径下执行命令
python cli_demo.py

 

如果你模型下载不完整,命令行就会下面这个错误:

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer

此时可以输入命令检查一下文件完整性。

# 星号 * 表示文件已经下载到本地,没有星号表示文件尚未下载。
git lfs ls-files

【注】有两个模型没有下载成功,怎么办呢?使用 git lfs fetch命令可以重新下载没有下成功的模型。如果还是无法下载的话,就直接删掉chatglm3-6b文件夹,重新克隆。

git lfs fetch origin model-00001-of-00007.safetensors

 那我这里出现的问题是数据盘空间用完了,所以还得先去扩容,扩容后需要重启实例才能生效,然后再去执行上面的命令。

 

 

重新克隆下载模型后检查文件完整性终于没问题了! 

(2)WebUI测试

我们找到指定的demo文件,通过命令启动。这里比cli_demo麻烦一点的是需要做一下ssh端口映射。

补充说明一下SSH的知识点:

SSH(Secure Shell)是一种安全的网络协议,用于在网络上传输加密的数据流,常用于远程登录和管理计算机。在这里,就是使用SSH命令使用自己本地的电脑访问远程AutoDL服务器上跑起来的大模型Web应用。

不要忘记修改源代码中的模型路径。修改完成后保存并在终端中运行命令启动WEB应用。

# 运行streamlit应用
streamlit run web_demo_streamlit.py

接下来,我们在自己的电脑上使用SSH连接远程的算力服务器上的Web应用。

# 在自己的电脑上面打开CMD运行SSH命令
"""
这条命令意思是通过 SSH 协议连接到名为 connect.westb.seetacloud.com 的主机,使用端口 21133 并以用户名 root 登录。
"""
ssh -p 21133 root@connect.westb.seetacloud.com

但复制过来的SSH命令并没有设置端口映射。我们还需要修改一下这个命令。

"""
修改后的命令增加了几个选项:
-C: 表示启用压缩。
-N: 不执行任何命令,仅建立隧道。
-g: 允许远程主机通过隧道转发连接。
-L 6006:127.0.0.1:7860 设置本地端口转发,将本地的 6006 端口转发到远程主机的 8501 端口。
-p 21133 指定使用端口 21133 进行连接。
"""ssh -CNg -L 6006:127.0.0.1:8501 root@connect.westb.seetacloud.com -p 21133

【注】-p参数后面的端口,是你远程服务器SSH命令复制过来的-p端口。

【注】"6006:127.0.0.1:8501"  ==  "(自己电脑访问的端口):127.0.0.1:(远程算力服务器上启动的Web服务的端口)"

 【注】输入密码不会有提示,并且区分大小写,输入完成后不报错就说明成功了,不是卡主了。当你想断开连接,只需要Ctrl+C终止终端中的SSH就可以了。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】—进程地址空间

大家好呀,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流哦 本文由:残念ing原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各…

leetcode-44-通配符匹配

题解: 代码: 参考: (1)牛客华为机试HJ71字符串通配符 (2)leetcode-10-正则表达式匹配

低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络

刚搬进新租的房子,没有网络,开个热点?续航不太行。随身WIFI?大多是百兆级网络。找人拉宽带?太麻烦,退租的时候也不能带着走。5G CPE倒是个不错的选择,插入SIM卡就能直接连接5G网络,千…

学习日记_20241117_聚类方法(高斯混合模型)

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

列出D3的所有交互方法,并给出示例

D3.js 提供了丰富的交互方法,可以用来增强图表的用户交互体验。以下是一些常用的交互方法及其示例: 1. 鼠标事件 on("mouseover", function) 用途: 当鼠标悬停在元素上时触发。示例:svg.selectAll(".bar").on("mouseover&qu…

设计模式-参考的雷丰阳老师直播课

一般开发中使用的模式为模版模式策略模式组合,模版用来定义骨架,策略用来实现细节。 模版模式 策略模式 与模版模式特别像,模版模式会定义好步骤定义好框架,策略模式定义小细节 入口类 使用模版模式策略模式开发支付 以上使用…

模拟实现STL中的list

目录 1.设计list的结点 2.设计list的迭代器 3.list类的设计总览 4.list类的迭代器操作 5.list类的四个特殊的默认成员函数 无参的默认构造函数 拷贝构造函数 赋值运算符重载函数 析构函数 6.list类的插入操作 7.list类的删除操作 8.list.hpp源代码 1.设计list的结点…

.NET SDK 各操作系统开发环境搭建

一、Win10(推荐) 1、VS 2022 社区版 # 下载地址 https://visualstudio.microsoft.com/zh-hans/downloads/ 2、.NET 6 SDK # 下载地址 https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 3、Hello World 如果需要使用旧程序样式时,则…

IDEA怎么定位java类所用maven依赖版本及引用位置

在实际开发中,我们可能会遇到需要搞清楚代码所用依赖版本号及引用位置的场景,便于排查问题,怎么通过IDEA实现呢? 可以在IDEA中打开项目,右键点击maven的pom.xml文件,或者在maven窗口下选中项目,…

【Golang】——Gin 框架中的模板渲染详解

Gin 框架支持动态网页开发,能够通过模板渲染结合数据生成动态页面。在这篇文章中,我们将一步步学习如何在 Gin 框架中配置模板、渲染动态数据,并结合静态资源文件创建一个功能完整的动态网站。 文章目录 1. 什么是模板渲染?1.1 概…

力扣 LeetCode 144. 二叉树的前序遍历(Day6:二叉树)

解题思路&#xff1a; 方法一&#xff1a;递归&#xff08;中左右&#xff09; class Solution {List<Integer> res new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {recur(root);return res;}public void recur(TreeNode roo…

高级 SQL 技巧讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; SQL&#xff08;结构化查询语言&#xff09;是管理和操作数据库的核心工具。从基本的查询语句到复杂的数据处理&#xff0c;掌握高级 SQL 技巧不仅能显著提高数据分析的效率&#xff0c;还能解决业务中的复…

pom中无法下载下来的类外部引用只给一个jar的时候

比如jar在桌面上放着,操作步骤如下&#xff1a; 选择桌面&#xff0c;输入cmd ,执行mvn install:install-file -DgroupIdcom -DartifactIdaspose-words -Dversion15.8.0 -Dpackagingjar -Dclassifierjdk11 -Dfilejar包名称 即可把jar包引入成功。

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包…

在连通无向图中寻找欧拉回路(Eulerian Circuit)

在连通无向图中寻找欧拉回路(Eulerian Circuit) 问题描述解决方案概述算法步骤伪代码C代码示例如何在迷宫中找出一条路示例:在简单迷宫中应用欧拉回路结论问题描述 给定一个连通无向图 $ G = (V, E) $,我们需要找到一条路径,该路径正向和反向通过 $ E $ 中的每条边恰好一…

ANSYS Maxwell:3PH 感应电机 - 第 1 部分 - 力与热耦合

在此博客中&#xff0c;我们使用 Ansys RMxprt 创建了 3PH 感应电机的 1D 模型&#xff0c;并从设计中自动开发具有所有设置、边界条件和激励的麦克斯韦模型。 ANSYS RMxprt 1D 模型 - 3PH 感应电机设计 请参阅上一篇博客下面的链接&#xff0c;了解如何设置电机设计的 RMxp…

【linux】网络基础 ---- 数据链路层

用于两个设备(同一种数据链路节点)之间进行传递 数据链路层解决的问题是&#xff1a;直接相连的主机之间&#xff0c;进行数据交付 1. 认识以太网 "以太网" 不是一种具体的网络, 而是一种技术标准&#xff1a; 既包含了数据链路层的内容, 也包含了一些物理层的内容…

递归(二)---力扣22括号生成,力扣78求子集

22. 括号生成https://leetcode.cn/problems/generate-parentheses/ 括号生成 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))&quo…

数据分布之指数分布(sample database classicmodels _No.10)

数据分布之指数分布&#xff08;sample database classicmodels _No.10&#xff09; 准备工作&#xff0c;可以去下载 classicmodels 数据库具体如下 点击&#xff1a;classicmodels 也可以去 下面我的博客资源下载 https://download.csdn.net/download/tomxjc/88685970 文章…