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

以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就可以了。

 

 

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

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

相关文章

Vue 中的透传,插槽,依赖注入

1. 透传attributes 在组件上使用透传attribute&#xff1a; 当你在父组件中使用子组件时&#xff0c;你可以添加一些attribute到子组件上&#xff0c;即使这些attribute没有在子组件的props中声明。 父组件&#xff1a; <!-- 父组件&#xff0c;例如 ParentComponent.vue…

97.【C语言】数据结构之栈

目录 栈 1.基本概念 2.提炼要点 3.概念选择题 4.栈的实现 栈初始化函数 入栈函数 出栈函数和栈顶函数 栈顶函数 栈销毁函数 栈 基本概念参见王爽老师的《汇编语言 第四版》第56和57页 节选一部分 1.基本概念 注意:这里提到的数据结构中的栈有别于操作系统的栈,后者是…

Spring-boot 后端java配置接口返回jsp页面

Spring-boot 后端java配置接口返回jsp页面 spring boot 基于spring MVC的基础上进行了改进&#xff0c; 将Controller 与ResponseBody 进行了合并成一个新的注解 RestController。 当用户请求时&#xff0c;需要有视图渲染的&#xff0c;与请求数据的请求分别使用 1.在appli…

【操作系统实验课】Makefile与编译

1. 创建项目结构 my_project 使用mkdir命令在根目录下创建项目my_project sudo mkdir /my_project 进入my_project目录 cd my_project src 在my_project目录下创建src子目录 sudo mkdir src 进入src目录 cd src root(根用户) 切换用户身份为root(根用户) root用户…

冠层四流近似模型的发展历史

1. Kunbelka-Munk theory This is the earlist model using a two-stream approximation d I d z − ( k s ) I s J d J d z ( k s ) J − s I \begin{aligned} &\frac{dI}{dz} -(ks)IsJ\\ &\frac{dJ}{dz} (ks)J - sI \end{aligned} ​dzdI​−(ks)IsJdzdJ​(…

Linux从0——1之shell编程4

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

2024.5 AAAiGLaM:通过邻域分区和生成子图编码对领域知识图谱对齐的大型语言模型进行微调

GLaM: Fine-Tuning Large Language Models for Domain Knowledge Graph Alignment via Neighborhood Partitioning and Generative Subgraph Encoding 问题 如何将特定领域知识图谱直接整合进大语言模型&#xff08;LLM&#xff09;的表示中&#xff0c;以提高其在图数据上自…

【大语言模型】ACL2024论文-15 大型语言模型中的最佳解释推断

【大语言模型】ACL2024论文-15 大型语言模型中的最佳解释推断 目录 文章目录 【大语言模型】ACL2024论文-15 大型语言模型中的最佳解释推断目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数&#xff1a;★★★★☆后记 大型语言模型中的最佳解释推断 摘…

【最新鸿蒙开发之性能优化——动态加载和延迟加载】

大家好&#xff0c;我是学徒小z&#xff0c;在经历了一段时间项目开发中&#xff0c;我也渐渐意识到了性能的重要性&#xff0c;今天就分享一篇优化应用运行性能的文章&#xff0c;话不多说&#xff0c;开干&#xff01; 引言 延时触发操作与延迟加载的简介 动态加载&#x…

云计算研究实训室建设方案

一、引言 随着云计算技术的迅速发展和广泛应用&#xff0c;职业院校面临着培养云计算领域专业人才的迫切需求。本方案旨在构建一个先进的云计算研究实训室&#xff0c;为学生提供一个集理论学习、实践操作、技术研发与创新于一体的综合性学习平台&#xff0c;以促进云计算技术…

信号保存和信号处理

目录 信号保存中重要的概念 内核中信号的保存 对sigset_t操作的函数 对block&#xff0c;pendding&#xff0c;handler三张表的操作 sigpromask ​编辑 sigpending 是否有sighandler函数呢&#xff1f; 案例 信号处理 操作系统是如何运行的&#xff1f; 硬件中断 …

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转(跨文件跳转)这些功能

&#xff08;一&#xff09;方法一&#xff1a;安装插件SystemVerilog - Language Support 安装一个vscode插件即可&#xff0c;插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&am…

初识算法 · 模拟(1)

目录 前言&#xff1a; 替换所有的问号 题目解析 算法原理 算法编写 提莫攻击 题目解析 算法原理 算法编写 外观数列 题目解析 算法原理 算法编写 前言&#xff1a; ​本文的主题是模拟&#xff0c;通过三道题目讲解&#xff0c;一道是提莫攻击&#xff0c;一道是…

〔 MySQL 〕数据类型

目录 1.数据类型分类 2 数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float 2.3.2 decimal 3 字符串类型 3.1 char 3.2 varchar 3.3 char和varchar比较 4 日期和时间类型 5 enum和set mysql表中建立属性列&#xff1a; 列名称&#xff0c;类型在后 n…

数据结构王道P234第二题

#include<iostream> using namespace std; int visit[MAxsize]; int color[MaxSize];//1表示红&#xff0c;2表示白&#xff1b; bool dfs(Graph G, int i){visit[i]1;ArcNode *p;bool flag1;for(pG.vertices[i].firsrarc; p ; pp->next){int jp->adjvex;if(!visi…

算法——两两交换链表中的节点(leetcode24)

这是一道对于链表节点进行操作的题目非常考验对于链表操作的基本功&#xff1b; 解法: 本题的解法结合下图来进一步解释 创建一个虚拟节点指向头结点以便使代码逻辑看起来更为简便且操作节点容易,定义cur是为了方便找到cur之后的两个节点进行交换操作定义pre和aft是为了保存执…

【AI图像生成网站Golang】项目架构

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 四、项目架构 本项目的后端基于Golang和Gin框架开发&#xff0c;主要包括的模块有&#xff1a; backend/ ├── …

翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践

引言&#xff1a;自2021年起&#xff0c;翼鸥教育便开始应用OceanBase社区版&#xff0c;两年间&#xff0c;先后部署了总计12套生产集群&#xff0c;其中核心集群占比超过四分之三&#xff0c;所承载的数据量已突破30TB。自2022年10月&#xff0c;OceanBase 社区发布了4.2.x 版…

ESP32-S3模组上跑通esp32-camera(19)

接前一篇文章&#xff1a;ESP32-S3模组上跑通esp32-camera&#xff08;18&#xff09; 本文内容参考&#xff1a; esp32-camera入门&#xff08;基于ESP-IDF&#xff09;_esp32 camera-CSDN博客 OV5640手册解读-CSDN博客 ESP32_CAM CameraWebServer例程源码解析笔记&#xf…

vmWare虚拟环境centos7安装Hadoop 伪分布式实践

背景&#xff1a;近期在研发大数据中台&#xff0c;需要研究Hadoop hive 的各种特性&#xff0c;需要搭建一个Hadoop的虚拟环境&#xff0c;本来想着使用dock &#xff0c;但突然发现docker 公共仓库的镜像 被XX 了&#xff0c;无奈重新使用vm 搭建虚拟机。 大概经历了6个小时完…