Linux进行模型微调前的环境准备

news2025/2/26 9:31:14

   在Linux机器上对模型进行微调前,首先需要准备环境,即安装相关的软件。因为linux是一个无界面操作系统,软件安装完成后,还需要有便捷的交互方式编写脚本,调试脚本。此篇博客将专门介绍如何快速安装所需依赖软件,以及如何用jupyter notebook进行便捷的交互式编程。

申请设备

  此篇博客申请的设备是AWS上的g5系列,如果你使用的是其他云厂商服务,选择带GPU的instance即可。博客里面选用的操作系统是Ubuntu22版本,属于Debian系列,架构是x86-64的架构。在申请设备的时候,为了方便从外面通过ssh连接instance,enable了public IP的分配。对模型微调需要很多磁盘空间存储下载的模型参数文件,所以,在申请instance的时候尽量将磁盘空间设置大一些,我自己设置的是256G。如果不清楚使用的instance的架构,可通过下面的命令查看,另外,还可以通过命令查看ubuntu的版本信息。

#查看架构
dpkg --print-architecture

#查看ubuntu版本信息
lsb_release -a

aws上申请好instance后,需要提前安装好gcc,安装命令:

sudo apt-get update   && apt-get install gcc

检查gcc是否安装成功的命令: gcc -version

安装NVIDIA驱动

安装cuda driver的命令如下所示,非常简单。

#安装包管理,即生成相应的key,以后在安装Nvidia的相关包时,会进行安全相关的检查,保证安装的包是受到官网认证的包
distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')

wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb

sudo dpkg -i cuda-keyring_1.0-1_all.deb

#安装cuda-driver
sudo apt-get update 
sudo apt-get -y install cuda-drivers

执行命令后,用 nvidia-smi 命令进行检查,通过命令可以看到GPU相关信息,包括版本,显存大小等,具体如下图所示:

安装conda

在进行模型微调或者微调评估时,除了用到常用的pytorch包外,还可能用到NumPy,Pandas等包,所以,这里选择安装Anaconda,而不是Miniconda。安装脚本如下所示:

#安装其他的一些依赖包
apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6

#下载安装脚本
curl -O https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh

#执行安装脚本,需要长按enter键review完协议,并输入yes,同意协议才会开始正式安装Anaconda
bash Path/Anaconda3-2020.05-Linux-x86_64.sh

#安装完成后,激活
source <PATH_TO_CONDA>/bin/activate
conda init

安装结果如下图所示,可以看到,安装成功,此时在terminal里面输入conda,会显示一系列命令参数,说明正确安装了conda。

安装cuda toolkit

安装cuda toolkit的方法有很多,这里因为已经安装好了conda,所以通过conda命令来安装cuda toolkit。

安装命令:conda install cuda -c nvidia

卸载命令:conda remove cuda

在conda的激活环境中,查看python,pip,可以看到,都已经默认安装好了。另外,还可以通过pip list命令查看安装的所有python包,具体如下图所示:

如果要查看某个具体的包是否被安装,可以通过pip show命令。如下图所示,可以看到transformers库已经被默认安装上去了,pytorch库还没有安装。

如果不通过conda安装cuda,还可以从官网获取安装命令进行安装,具体如下图所示。选择自己使用的instance的操作系统类型,架构,系统版本等信息就可以得到最标准的安装命令。

安装pytorch等其他库

通过conda 安装pytorch的命令: conda install pytorch torchvision -c pytorch。当然,除了安装pytorch,还可以通过conda命令安装任意其他的包,安装命令:conda install package_name。

另外,也可以通过命令批量安装requirements.txt文件中的所有依赖。

安装命令:conda install --file requirements.txt

conda默认是从default的channel上安装包,但是default channel上的包可能不全,所以,建议使用conda-forge作为下载包的渠道。不同渠道下载的包,可能会有兼容性问题。如果遇到兼容性问题,建议在激活环境后,通过下面的命令进行全量包更新。相关命令如下所示:

#添加conda-forge channel并设置为最高优先级
conda config --add channels conda-forge

#查看现在的channel状态和优先级
conda config --get channels

#更新包命令
conda update --all

在安装pytorch的时候,需要注意一点,pytorch和cuda之间是有版本映射关系的,如果版本映射关系不正确,后面运行程序可能会出错。最标准的安装办法是:在官网输入相关信息,得到安装命令进行安装。具体如下图所示,选择要安装的pytorch版本,os,package,cuda版本,即可得到正确的安装命令。

Pytorch安装成功,可以运行脚本查看安装的Pytorch是否支持GPU。

创建交互式编程方式

activate后,在激活的环境下,执行jupyter notebook命令,执行该命令后,会默认生成下面的连接,端口是8888。如下图所示:

为了能在外面电脑的浏览器上打开notebook,需要在instance的security group的inbound规则中开放8888端口。另外,执行下面的命令,这段命令是用于建立SSH隧道(SSH tunnel),通过加密的方式在本地计算机和远程服务器之间建立连接。这通常用于远程访问远程服务器上运行的服务,比如Jupyter Notebook,通过浏览器访问本地计算机上的服务。其中pem文件是申请instance时创建的权限文件。

ssh -i /Users/taoli/Downloads/taoli-tokyo.pem -N -f -L 8888:localhost:8888 ubuntu@instance public ip

-L 8888:localhost:8888: 在本地端口8888上创建一个本地端口转发。这意味着本地计算机的端口8888将被转发到远程服务器的localhost:8888。

执行上面的命令后,就可以在外面的电脑浏览器上输入上图生成的连接,创建python脚本或者jupyter脚本,开始交互式编程和调试了。具体如下图所示:

以上就是对进行模型微调前环境准备的专门介绍。

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

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

相关文章

黑马程序员SSM框架-Spring

视频链接&#xff1a;Spring-00-Spring课程介绍_哔哩哔哩_bilibili Spring Framework系统架构以及学习顺序 核心概念&#xff08;IoC、DI、Bean&#xff09; IoC入门案例 导入坐标 提供需要被管理的类&#xff08;Dao&#xff09;和需要被注入的类&#xff08;Service&#x…

Unity中Shader裁剪空间推导(在Shader中实现)

文章目录 前言一、在Shader中&#xff0c;手动把正交相机的坐标转化到裁剪空间1、我们在属性面板定义一个变量&#xff0c;用于传入摄像机的信息2、获取h、r、w、n、f3、获取OpenGL下的转化矩阵4、 获取DirectX下的转化矩阵5、手动将观察空间下的坐标转换到裁剪空间下6、这里为…

Java 对象内存布局

在虚拟机中&#xff0c;Java对象在内存中的布局可以分为三块&#xff1a; 对象头&#xff08;Header&#xff09; &#xff1a;包含 markword 标记字段和类型指针&#xff0c;32 位上大小是 8 个字节&#xff0c;64 位 16 个字节&#xff0c;实例数据&#xff08;Instance Dat…

sql_lab之sqli中的搜索型注入

搜索型注入 原理是运用模糊查询&#xff1a; select * from users where username like %a% 1.找到具有模糊查询的搜索框的注入点 2.构造闭合 因为模糊查询的代码是 select * from users where username like %a% 所以应该 鱼%’ -- s 判断构造闭合的函数是否正确 鱼%…

【DeepLearning】Deep Residual Learning for Image Recognition恺神大作学习

[TOC] Deep Residual Learning for Image Recognition 论文 1. 文章主要想解决什么问题&#xff0c;用了什么方法 深度神经网络在训练过程中的3个关键问题&#xff1a; 梯度消失/爆炸问题&#xff1a;随着网络层数的增加&#xff0c;梯度在反向传播过程中可能会变得非常小&a…

浅谈政企风险防控体系

政企风控体系是集团客户部在生产运营过程中对政企产品可能面临的风险进行监测&#xff0c;针对监测发现的风险&#xff0c;制定相应的管控措施&#xff0c;并跟进落实&#xff0c;以最大限度地减少或消除风险对组织的影响的管控体系。 本文之所以称为“浅谈”是因为文中主要围绕…

一条查询SQL是如何执行的?更新、新增、删除呢?

你好&#xff0c;我是田哥 本文共14629字&#xff0c;读完预计需要37分钟&#xff0c;建议先收藏。 大部分朋友估计都只知道写sql然后执行&#xff0c;但是并不知道MySQL背后到底是怎么实现的。 八股文中也有这么一道题&#xff1a;在MySQL中&#xff0c;一条SQL到底是如何执行…

【大数据存储与处理】开卷考试总复习笔记

文章目录 实验部分一、 HBase 的基本操作1. HBase Shell入门2. HBase创建数据库表3. HBase数据操作4. HBase删除数据库表5. HBase Python基本编程 before二、 HBase 过滤器操作1.创建表和插入数据2.行键过滤器3.列族与列过滤器4.值过滤器5.其他过滤器6.python hbase 过滤器编程…

通过 conda 安装 的 detectron2

从 detectron2官网 发现预编译的版本最高支持 pytorch1.10、cuda11.3。&#xff08;2023-12-26&#xff09; 1、安装 conda 环境。 conda create --name detectron2 python3.8 2、安装 pytorch1.10 和 cuda11.3。 pip3 install torch1.10.0cu113 torchvision0.11.1cu113 torc…

Hadoop之HDFS 详细教程

1、HDFS概述 Hadoop 分布式系统框架中&#xff0c;首要的基础功能就是文件系统&#xff0c;在 Hadoop 中使用FileSystem 这个抽象类来表示我们的文件系统&#xff0c;这个抽象类下面有很多子实现类&#xff0c;究竟使用哪一种&#xff0c;需要看我们具体的实现类&#xff0c;在…

CTFshow-pwn入门-栈溢出pwn41-pwn42

pwn41 我们首先将pwn文件下载下来&#xff0c;拖入到虚拟机查看一下文件的保护信息。 chmod x pwn checksec pwn该文件只开启了栈不可执行&#xff0c;并且文件是32位的。 我们把文件托到ida32中查看一下反编译代码。 int __cdecl main(int argc, const char **argv, const c…

大数据开发之Sqoop详细介绍

测试环境 CDH 6.3.1 Sqoop 1.4.7 一.Sqoop概述 Apache Sqoop&#xff08;SQL-to-Hadoop&#xff09;项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下&#xff0c;轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中&…

呼叫中心知识库管理

呼叫中心向客户提供所需服务与支持的过程中&#xff0c;会遇到形形色色的客户和各式各样的问题&#xff0c;需要客服人员做出回答。客户对于客服人员的答复是否满意直接关系着呼叫中心的业绩&#xff0c;甚至企业的兴衰。而OKCC的知识库管理正是基于呼叫中心的这一需求而存在&a…

Python range函数新手指南:详细解析内部机制

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com range函数是Python中常用的内置函数之一&#xff0c;用于生成一系列连续的整数。本文将深入探讨range函数的内部实现&#xff0c;以揭示其工作原理和效率。 range函数的基本用法 range函数的基本用法。它通常使…

async和await的使用

async和await是promise的一种语法糖,也就是更简单易懂的写法。 在很多项目中,你会经常看到async和await的配合使用,看到原始的promise写法反而不多,就是因为async-await这种写法是用同步的语法去实现异步的逻辑。 基础使用 原生promise写法 let value nulllet proFn new P…

最新腾讯云2核2G轻量服务器性价比首选62元一年!

继昨天阿里云2核2G3M带宽轻量应用服务器降价到63元后&#xff0c;腾讯云迅速做出响应&#xff0c;腾讯云轻量2核2G3M服务器降价到62元一年&#xff0c;1元之差&#xff0c;你选择阿里云还是腾讯云&#xff1f;值得一提的是&#xff0c;阿里云不限制月流量&#xff0c;但是腾讯云…

【廖雪峰Java】Java基础知识

学习课程&#xff1a;廖雪峰的官方网站&#xff1a;https://www.liaoxuefeng.com/ 1、简介 1.1、Java之父 詹姆斯高斯林&#xff08;James Gosling&#xff09; 1.2、Java三个不同版本 Java SE&#xff1a;Standard EditionJava EE&#xff1a;Enterprise EditionJava ME&a…

openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作

文章目录 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作174.1 事务隔离说明174.2 写入和读写操作174.3 并发写入事务的潜在死锁情况 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作 174.1 事务隔离说…

生存分析序章2——生存分析之Python篇:lifelines库入门

目录 写在开头1. 介绍 lifelines 库1.1 lifelines库简介1.2 安装与环境配置 2. 数据准备2.1 数据格式与结构2.2 处理缺失数据2.3 对异常值的处理 3. Kaplan-Meier 曲线3.1 使用 lifelines 绘制生存曲线3.2 曲线解读3.3 额外补充 4. Cox 比例风险模型4.1 lifelines 中的 Cox 模型…

Echarts中饼图-实现放大显示数据

示例 代码演示 option {tooltip: {trigger: item},legend: {top: 5%,left: center},series: [{name: Access From,type: pie,radius: [40%, 70%],avoidLabelOverlap: false,label: {show: false,position: center},emphasis: {scale: true,//是否开启高亮后扇区的放大效果。s…