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

深度学习入门到放弃系列 - 阿里云人工智能平台PAI部署开源大模型chatglm3

通过深度学习入门到放弃系列 - 魔搭社区完成开源大模型部署调用 ,大概掌握了开源模型的部署调用,但是魔搭社区有一个弊端,关闭实例后数据基本上就丢了,本地的电脑无法满足大模型的配置,就需要去租用一些高性价比的GPU机器长期运行,起码数据和环境能长期存在。以我在阿里云人工智能平台 PAI部署和大家分享一下经验,其他平台自行尝试、选择。

免费算力平台

  • 阿里云人工智能平台 PAI
  • 阿里天池实验室
  • Kaggle平台
  • Colab(需要梯子)

付费算力平台

  • AutoDL
  • Gpushare Cloud
  • Featurize
  • AnyGPU

阿里云人工智能平台 PAI试用申请流程

我选择的是阿里云人工智能平台 PAI平台的免费算力平台,免费使用三个月,截止目前还很好抢,每天500份传送门。同时,也推荐一些其他的算力平台给大家自行选择。

在这里插入图片描述
建议选交互式建模PAI-DSW

在这里插入图片描述

立即试用!

在这里插入图片描述
在这里插入图片描述

创建规格的时候千万注意选择GPU-支持资源包抵扣的这种。

在这里插入图片描述

创建实例!

在这里插入图片描述

启动实例!

在这里插入图片描述
在这里插入图片描述打开后界面和魔搭社区就比较类似了,有命令行、Notebook等。

在这里插入图片描述

环境搭建

  1. 新建账号:进来就已经是root账户了,需要创建一个用户。
# 添加一个新用户(如用户名为csdn)遇到执行
adduser csdn 
# 将用户添加到 sudo 组
adduser csdn sudo 
  1. 进来以后发现ll、source等命令都不能用,需要先把dash改成bash命令,参考source: not found问题处理。解决完重新打开命令行以后就是我现在的界面。

在这里插入图片描述

  1. 更换国内软件源
cd /ect/apt# 备份sources.list,以免出问题
sudo cp sources.list sources.list.backupvim sources.list# 复制到sources.list文件末尾
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
  1. 安装vim编辑器、git
# 使用vi可跳过
sudo apt-get install vimsudo apt-get install git
  1. 系统软件更新
# 更新软件包列表
sudo apt update
# 执行更新命令
sudo apt upgrade
  1. 安装anaconda
# 下载安装包
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
# 执行安装命令
bash Anaconda3-2023.09.0-Linux-x86_64.sh

直到出现 yes no 选项,选择yes,再然后遇到路径/root/anaconda3,然后按“Enter”键使用Anaconda的默认安装位置/root/anaconda3下,然后等待安装结束。

  1. 配置环境变量
# 印象中不创建账号好像就没有bashrc的文件
vim ~/.bashrc
# 末尾添加anaconda3所在路径,和第六步路径一致
export PATH=/root/anaconda3/bin:$PATH
# 使环境变量的修改立即生效
source ~/.bashrc
  1. 安装之前需要配置一下conda,都说用国内镜像源,我试了没用
# 我用的这种方法
conda install -n base conda-libmamba-solver
# 设置全局使用libmamba
conda config --set solver libmamba
  1. conda创建虚拟环境
conda create --n chatglm3_test python=3.11
conda activate chatglm3_test
# 如果中间报错找不到activate命令,使用下面的命令试试
source /root/anaconda3/etc/profile.d/conda.sh
  1. 安装pytorch等依赖

nvidia-msi查看目前的cuda版本来选择对应的pytorch

在这里插入图片描述

# CUDA 11.8 根据我自己的版本我选择第一个就好了
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=11.8 -c pytorch -c nvidia
# CUDA 12.1
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia
# CPU Only
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 cpuonly -c pytorch
  1. 验证GPU版本的PyTorch
import torch
print(torch.cuda.is_available()) 

如下图说明安装成功。

在这里插入图片描述
12. 下载ChatGLM3项目文件

git下载ChatGLM3项目文件时可能会出现Permission denied,参考解决办法 git报错Permission denied的解决方法

# 创建文件夹
mkdir /opt/chatglm3
# 切换到新建的目录下
cd /opt/chatglm3
# 下载ChatGLM3
git clone git@github.com:THUDM/ChatGLM3.git
# 升级pip版本
python -m pip install --upgrade pip 
  1. 安装ChatGLM运行的项目依赖
cd /opt/chatglm3/ChatGLM3
# 安装依赖
pip install -r requirements.txt
  1. 安装模型权重文件

Git Large File Storage(Git LFS)是一种用于处理大文件的工具,在 Hugging Face等平台下载大模型时,通常需要安装 Git LFS,主要的原因是:Git 本身并不擅长处理大型文件,因为在 Git 中,每次我们提交一个文件,它的完整内容都会被保存在 Git 仓库的历史记录中。但对于非常大的文件,这种方式会导致仓库变得庞大而且低效。而 Git LFS, 就不会直接将它们的内容存储在仓库中。相反,它存储了一个轻量级的“指针”文件,它本身非常小,它包含了关于大型文件的信息(如其在服务器上的位置),但不包含文件的实际内容。当我们需要访问或下载这个大型文件时,Git LFS 会根据这个指针去下载真正的文件内容
实际的大文件存储在一个单独的服务器上,而不是在 Git 仓库的历史记录中。所以如果不安装 Git LFS 而直接从 Hugging Face 或其他支持 LFS 的仓库下载大型文件,通常只会下载到一个包含指向实际文件的指针的小文件,而不是文件本身。

# 安装git-lfs
sudo apt-get install git-lfs
# 初始化
git lfs install
# 魔搭平台下载模型权重文件,Hugging Face太慢了
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

目录结构如下图所示,chatglm3-6b目录为模型权重文件
在这里插入图片描述

  1. 运行ChatGLM3-6B模型

运行前需要改一下模型权重文件的路径,我们提前下载,改成本地的路径,否则会重新下载。

在这里插入图片描述

在basic_demo目录下运行cli_demo.py文件,能正常对话说明大功告成了!千万注意要sudo运行哈!

在这里插入图片描述

遇到的问题

问题一:Ubuntu下shell执行source命令报source: not found问题处理

问题二:conda: error: argument COMMAND: invalid choice: ‘activate‘

在这里插入图片描述

问题三:git报错Permission denied

在这里插入图片描述

问题四:conda下载文件慢

相关文章:

深度学习入门到放弃系列 - 阿里云人工智能平台PAI部署开源大模型chatglm3

通过深度学习入门到放弃系列 - 魔搭社区完成开源大模型部署调用 ,大概掌握了开源模型的部署调用,但是魔搭社区有一个弊端,关闭实例后数据基本上就丢了,本地的电脑无法满足大模型的配置,就需要去租用一些高性价比的GPU机…...

GPT-4o,AI实时视频通话丝滑如人类,Plus功能免费可用

不开玩笑,电影《她》真的来了。 OpenAI最新旗舰大模型GPT-4o,不仅免费可用,能力更是横跨听、看、说,丝滑流畅毫无延迟,就像在打一个视频电话。 现场直播的效果更是炸裂: 它能感受到你的呼吸节奏&#xf…...

【优选算法】——Leetcode——202—— 快乐数

目录 1.题目 2. 题⽬分析: 3.简单证明: 4. 解法(快慢指针): 算法思路: 补充知识:如何求⼀个数n每个位置上的数字的平⽅和。 总结概括 5.代码实现 1.C语言 2.C 1.题目 202. 快乐数 编写一个算法来…...

华大基因CEPO-尹烨说学习与生活

怎么去面对生活和事业中的不确定性? 尹烨说,人类能够对抗不确定性的唯一的办法是,去让自己充电。 主持人问他,“和你同年的也有很多人,他们也可能也在学习,你怎么就能够脱颖而出呢?” 他说&am…...

C#中json数据序列化和反序列化的最简单方法(C#对象和字符串的相互转换)

文章目录 将C#对象转换为json字符串Newtonsoft模块的安装用Newtonsoft将对象转换为json字符串 将json字符串转换为C#对象 将C#对象转换为json字符串 本介绍将基于C#中的第三方库Newtonsoft进行,因此将分为Newtonsoft模块的安装和使用两部分。该模块的优势在于只需要…...

logback 日志脱敏

工具类 CustomLogbackPatternLayoutEncoder.java import ch.qos.logback.classic.encoder.PatternLayoutEncoder;public class CustomLogbackPatternLayoutEncoder extends PatternLayoutEncoder {/*** 正则替换规则*/private LogbackReplaces replaces;/*** 使用自定义 MyLog…...

element-ui的表单中,输入框、级联选择器的长度设置

使用<el-col>控制输入框的长度 <el-form-item label"姓名" label-width"80px"><el-col :span"15"><el-input v-model"form.name" autocomplete"off"></el-input></el-col></el-form…...

深入了解 npm:Node.js 包管理工具详解

文章目录 一、npm 基本概念1.1 什么是 npm&#xff1f;1.2 package.json 文件 二、npm 常用命令2.1 初始化项目2.2 安装依赖2.2.1 安装单个包2.2.2 全局安装包2.2.3 安装开发依赖 2.3 移除依赖2.4 更新依赖2.5 查看已安装的包2.6 发布包 三、npm 高级用法3.1 使用 npm scripts3…...

记一次跨域问题

线上跨域问题&#xff0c;在自己配置确认没问题下&#xff0c;要及时找运维看看是不是nginx配置问题。 两个方面&#xff1a; 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案&#xff01; SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案...

第9章 负载均衡集群日常维护

一个设计良好的高可用负载均衡集群&#xff0c;交付使用以后并不能一劳永逸。欲使其高效、稳定、持续对外服务&#xff0c;日常维护必不可少。 对于高可用负载均衡集群来说&#xff0c;有两种类型的维护形式&#xff1a;常规性维护与突发性维护。突发性维护一般指故障处理&…...

鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容

基本概念 LiteIPC是OpenHarmony LiteOS-A内核提供的一种新型IPC&#xff08;Inter-Process Communication&#xff0c;即进程间通信&#xff09;机制&#xff0c;为轻量级进程间通信组件&#xff0c;为面向服务的系统服务框架提供进程间通信能力&#xff0c;分为内核实现和用户…...

Charger之三动态电源路径管理(DPPM)

-----本文简介----- 主要内容包括&#xff1a; 领资料&#xff1a;点下方↓名片关注回复&#xff1a;粉丝群 硬件之路学习笔记公众号 Charger的动态电源路径管理&#xff08;DPPM&#xff09; 前篇内容&#xff1a;①电池管理IC&#xff08;Charger&#xff09;了解一下&…...

大数据模型的选择与安装

大数据模型的选择和安装是一个复杂的过程&#xff0c;涉及多个因素&#xff0c;包括模型的通用能力、特定任务的性能、数据效率、评估完整性、成本以及部署的硬件和软件环境。以下是一些关于大数据模型选择与安装的考虑因素和步骤&#xff1a; 选择大数据模型的考虑因素&#…...

React 之 lazy(延迟加载)(十七)

lazy 能够让你在组件第一次被渲染之前延迟加载组件的代码。 在组件外部调用 lazy&#xff0c;以声明一个懒加载的 React 组件: import { lazy } from react;const MarkdownPreview lazy(() > import(./MarkdownPreview.js)); 配合 Suspense 实现懒加载组件 //App.js imp…...

Node.js -- 会话控制

文章目录 1. 会话介绍2. cookie 相关操作2.1 cookie 设置2.2 删除 cookie2.3 获取cookie 3. session 相关操作4. cookie 和session 的区别5. 补充知识 -- CSRF跨站请求伪造6. token 1. 会话介绍 所谓会话控制就是对会话进行控制 HTTP是一种无状态的协议&#xff0c;它没有办法…...

做抖店不能踩的几个坑,新手要照做,老玩家要听劝~

我是王路飞。 很多人都说抖店的运营很简单&#xff0c;选选品、对接一下达人&#xff0c;就可以坐等店铺出单了。 这话骗骗还没开店的小白也就得了&#xff0c;但凡做抖店超过一个月的&#xff0c;都不会相信这句话。 细心耐心是做抖店最基本的态度。 拿到一个好结果的前提…...

【Kibana】快速上手Kibana平台(KQL)

文章目录 快速使用Kibana平台常用查询语句KQL基本查询覆合查询模糊查询 目前市面上大部分的公司的日志系统都是使用ELK系统&#xff0c;因此我们进行工作必须得掌握Kibana平台的基本使用&#xff0c;这里主要说明怎么“快速使用Kibana平台”以及记录一些常用的“KQL语言”。 快…...

全方位入门git-慕课网 笔记

目录 【上传github忽略某些文件】【配置用户名和邮箱】【想要删除不需要的文件时如何进行操作】【想要给文件重命名如何操作】【想要移动文件到其他位置时如何操作】【文件有变化时&#xff0c;如何查看前后变化】【操作失误的情况下如何实现一键还原】【不再追踪时如何实现撤销…...

使用 Docker 部署 TaleBook 私人书籍管理系统

1&#xff09;项目介绍 GitHub&#xff1a;https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建&#xff0c;具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…...

分布式系统的一致性与共识算法(一)

前言 etcd是线性一致性读&#xff0c;而zk却是顺序一致性读&#xff0c;再加上各种共识、强弱一致的名词&#xff0c;看到欸度时候总会混淆&#xff0c;这里会给出一些例子来帮助理解。 什么是一致性&#xff1f; 在谈到一致性这个词时&#xff0c;你会想到CAP理论的consist…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...