vscode连接 服务器进行 RD/DL 研发

ooooop——❤️

插件:code runner , DataBase Client code-style
还有特定语言的 去 特定的 快速开始——插件网站
修改:rules , comate设置
下载依赖,跑通代码,可以不用跑通,可以先看懂!如果没时间的话 ——> 询问Zulu,实际讲解一个例子,看懂主要涉及到的文件——> 注释加上之后,git commit——> 分解需求为n个阶段,思考详细完整的prompt,询问Ducc

自己思考的原则:
使用英语 书写 markdown 的格式 更省token
阶段划分,详细prompt
更新逻辑:1️⃣ 2️⃣ 3️⃣ … 就像解释黑马到课程流程图一样,需要自己脑子里面想好流程图,然后详细描述给
指令结合代码,指出引用的函数,就像你自己思考写入代码的过程
把自己能写出来的 代码写出来,比如查询条件
及时保存!!再去问ducc ,每次改完之后对比!,问ducc中途别动代码

Prompt 附上:
附上已有的控制台的输出
要求不要删除已有的函数定义,可以增加函数定义
要求每一个步骤完成,需要打印控制台日志,并做好分割线到处理,以便清晰可见
要求做好 鲁棒性的处理,如果没有查询到正确的数据,需要打印 出详细的原因
要求循序渐进的处理,先完成第一阶段的内容,然后停止,我自己去检查,之后还会再次找您完成后续阶段的任务,以及补充更多的内容,谢谢您

\

在这里插入图片描述

1.前置工作

SSH 命令

两种连接方法

①基于口令的安全验证(密码登录)
原理:用户输入账号和密码,SSH会对传输的数据进行加密,但无法验证服务器的真实性。
②基于公钥的安全验证(公钥认证)
支持完全禁用密码登录,极大提升安全性

  • 将公钥拷贝至服务器,私钥留在本地
  • 如果想要密钥登录后自动为root用户,就将公钥拷贝至root用户对应的.ssh/authorized_keys文件,如果想要密钥登录后为普通用户,就将公钥拷贝至普通用户对应的.ssh/authorized_keys文件

ssh的服务器端需要设置公钥权限

chmod 755 /root //755:rwxr-xr-x
chmod 700 /root/.ssh //700:rwx------
chmod 600 /root/.ssh/authorized_keys //600:rw-------

【注】若权限设置较低,具有安全风险;若权限设置较高,将无法实现公钥认证,可能会报错:SSH_MSG_DISCONNECT: 2 Too many authentication failures

经常看见的参数

语法:ssh [选项 <参数>] user@hostname
选项:-p,指定连接到远程主机的端口号,默认是22;
选项:-f,后台运行;
-i 私钥路径:手动指定一个私钥文件用于认证
-v:输出基础调试信息(密钥加载、认证过程)
-vv:输出更详细的协议交互过程
-vvv:输出全量调试日志,包括每一个网络包、每一步密钥协商、算法匹配、权限校验的细节,是排查连接问题的核心工具

  • 不带 -o IdentitiesOnly=yes 时,ssh 除了你 -i 指定的私钥,还会自动尝试三类密钥:
    • ssh-agent 缓存里所有加载过的密钥;
    • ~/.ssh/ 下默认命名私钥:id_rsa、id_ed25519、id_ecdsa、id_dsa;
    • config 配置文件中 Host 段配置的 IdentityFile 密钥

加上 IdentitiesOnly=yes 就只使用 -i 指定的 id_shilx,不再遍历其他密钥

SSH是否必须先能Ping通

  • Ping 与 SSH 属于不同的网络层次,Ping 使用 ICMP协议 检测网络可达性
  • 而 SSH 是基于 TCP传输层(默认端口22)的加密远程登录协议。 因此,SSH连接并不一定要求Ping通,但Ping通可以证明网络层路由可达,有助于排查问题。
  • 关键区别
    • Ping通:说明IP层可达,但不代表端口可访问。某些服务器可能禁用ICMP响应,即使网络可达也会显示Ping不通。
    • SSH连接:需要目标主机的SSH服务运行、端口开放且防火墙允许访问
  • 常见场景
    • Ping通但SSH失败 SSH服务未启动或挂掉 SSH端口被修改(非22) 防火墙或安全组阻止了该端口
    • Ping不通但SSH可用 服务器禁用ICMP响应 中间网络设备屏蔽Ping,但TCP端口仍可访问,情况少见!!!

MobaXterm 连接服务器

和XShell区别

  • XShell
    • Xshell收费,个人版又有限制(只能打开四个窗口),但是感觉很稳定
    • Xshell 以简洁高效著称,启动速度和连接速度都非常快,特别适合需要频繁操作 SSH 的用户
    • 相较于 MobaXterm,Xshell 的界面设计较为传统,UI 自定义选项较少
  • moba

下载安装

在这里插入图片描述

使用技巧

  • 进入终端页面,在这里你就可以使用常用的Linux命令进行操作了,你再也不需要安装一个Ubuntu或者虚拟机去熟悉Linux命令了
  • 汉化版的下载,需要把没有汉化的删除干净
  • 可以创建一个桌面快捷方式,以便在MobaXterm启动时自动启动一个会话或一组会话
  • 多重执行允许你同时显示所有终端,并一次向所有人编写命令
  • MobaXterm 包管理器 (MobApt / apt-get) 允许您直接在 MobaXterm 终端中下载和使用更多 Unix 工具
  • 如果用 SSH 连接远程主机,则左侧就会自动启动 SFTP 连接,列出服务器上的文件列表,无需任何配置。可以直接上传下载,更方便的是,还可以让文件列表的当前目录,直接跟随终端当前目录同步切换!
  • 宏录制:选择macro ,然后点击,就会进行录制,然后你在终端的操作就会被录制下来,再点击一下,就会终止,保存到制定文件名。下次使用重复的操作你只需要点击一下宏脚本,就可以了,省去了重复的步骤
  • 在MobaXterm打开状态下,使用快捷键Ctrl+Alt+M可以在底部快速弹出终端,无需点击MobaXterm,此终端为半透明的
  • 选中复制,右键粘贴
    • 默认关闭了,需要设置一下
    • 菜单栏点击 Settings --> Configuration --> Terminal , 然后打勾选中

底部状态栏显示的who 命令结果——pts

pts/数字 —— 伪终端设备

  • 全称:Pseudo Terminal Slave(伪终端从设备)
  • 含义:远程 SSH 登录、终端模拟器创建的虚拟终端,不是服务器本地直连的物理终端。
    • 物理终端叫 tty(比如服务器接显示器、键盘的本地终端)
    • 所有 SSH 远程登录、终端里开的新窗口,都会分配一个 pts/N 设备
  • 数字编号:系统按顺序分配的终端序号,截图里出现 pts/313,说明这台服务器累计已经创建了 300 + 个终端会话,是多人共用的开发 / 计算服务器。
特性 tty1 pts/0
类型 物理终端 伪终端(虚拟终端)
使用场景 本地登录 远程登录或终端模拟器
设备路径 /dev/tty1 /dev/pts/0
登录方式 本地键盘和显示器 SSH、终端模拟器
数量限制 通常有限(tty1tty6 理论上无限制(动态分配)
  • https://www.cnblogs.com/yldf/p/18631072

终端粘贴出现 ^[200~

  • 某些终端模拟器支持 “括号粘贴模式”(Bracketed Paste Mode),这种模式允许终端区分用户直接输入的文本和从剪贴板粘贴的文本
  • bash readline 库版本 8.1 现已正式发布,它会默认启用括号粘贴模式。当您将文本粘贴到终端时(即使以换行符结尾),bash 会突出显示文本,您必须按 Enter 键来执行粘贴命令。括号粘贴模式是默认设置,它可以避免意外执行恶意命令
临时禁用括号粘贴模式

在粘贴前,手动关闭该模式(适用于当前会话):

printf ‘\e[?2004l’ # 关闭括号粘贴模式

粘贴内容后,重新启用(如果需要):

printf ‘\e[?2004h’ # 重新启用
永久禁用

在 Shell 配置文件(如 ~/.bashrc~/.zshrc)中加入:

bind ‘set enable-bracketed-paste off’ # Bash

unset zle_bracketed_paste # Zsh

XFTP 去传送代码/数据

  • 建议从本地上传时,先进行压缩,然后在vscode中询问Copilot命令,最后执行在Mobaxterm进行解压,这样会快一点
    • 远程的终端需要安装解压包,比如unrar 、unzip、tar命令等
  • 现在MobaXterm的sftp不是很方便,所以传送文件还是用了Xftp

下载安装

sftp和scp区别

  • SCP 和 SFTP 都建立在 SSH 协议之上,该协议通过在传输过程中加密数据来保护文件传输。
  • 虽然 SCP 主要在基于 Unix 的系统上受支持,但 SFTP 与更广泛的作系统兼容,包括 Windows、macOS 和 Linux
  • SCP 针对快速、直接的传输进行了优化,非常适合快速、一次性的文件移动,无需额外的管理功能
  • SFTP 提供了更大的灵活性。它支持安全的文件传输和文件管理任务,例如查看、重命名、删除和修改远程服务器上的文件和目录
    • 它还支持恢复中断的传输和压缩文件以节省带宽,使其成为复杂任务的更通用的选择

sftp和ftp区别

  • sftp 与 ftp 有着几乎一样的语法和功能
  • FTP是TCP/IP协议组中的协议之一,TP协议由两个部分组成:
    • FTP服务器(用来存储文件)
    • FTP客户端(用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源)
  • SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式
  • FTP通过TCP端口21建立控制连接,而SFTP通过SSH协议(TCP端口22)建立安全连接

vscode 插件连接

打开VSCode侧边栏中的扩展,在扩展商店中输入Remote-SSH,安装Remote-SSH

在这里插入图片描述

  • 登录指令格式为ssh -p {端口号} {用户}@{主机名}
    • 如登录指令为ssh -p 18435 root@connect.yza1.seetacloud.com,则端口号填写为18435,主机为connect.yza1.seetacloud.com,用户为root / 实验室为你创建的开发机,密码就是密码

守护进程的使用——⭐

  • 进行远程执行程序时,那么请注意开守护进程来执行程序,避免因为SSH连接中断导致程序终止,遭受不必要的损失
  • 文章参考这里
    screen进入后台终端之后+pyhton日志重定向式 的启动

重定向命令是什么?

user@host:/tmp# python train.py    # 一般情况下日志会输出到stdout/stderr中
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...

user@host:/tmp# python train.py > ./train.log 2>&1  # 把stdout/stderr中的日志重定向到train.log文件中,最后的2>&1中,2代表stderr, 1代表stdout,&1可以理解成像c语言中的求地址

user@host:/tmp# cat ./train.log    # 将train.log文件中的内容打印在stdout。cat(Concatenate FILE(s) to standard output.)
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...

user@host:/tmp$ python train.py > ./train.log 2>&1 &   # 如果最后再加一个&的效果是后台运行,还可以参考nohup的配合使用

screen命令的使用

  • 每一个screen会话都能拥有很多的子窗口,而我们的电脑能同时拥有很多不同的screen会话
  • 用户可以在会话中通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出
  • 窗口还可以被分区和命名,还可以监视后台窗口的活动
  • Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性
-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业 离线  !!!
-h <行数>  指定视窗的缓冲区行数  
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业   !!!
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称   !!!
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业

screen -S mysession #新建screen会话
screen  -ls  #查看所建立的所有会话
screen里面无法在终端使用鼠标滚轮进行上下翻页拉动

参考这里哦

nohup、screen、tmux命令区别——⭐

  • 只跑后台脚本、不用再次操作 → nohup
  • 需要断线后继续操作程序、交互式任务 → tmux(首选)
  • 环境无法安装 tmux → screen
nohub——脱离终端信号
  • nohup 是 “no hang up” 的缩写,允许在后台运行命令,并确保进程不会因为终端关闭而中断 。通常,nohup& 一起使用,将任务发送到后台
nohup command &
  • nohup 的输出(包括标准输出和错误输出)默认会重定向 到 nohup.out 文件中,除非手动指定其他文件。
  • 缺点是进程启动后无法回到交互式控制台,无法动态监控任务输出
screen——老牌虚拟终端会话工具

screen 是一款经典的终端复用工具,允许你在一个终端会话中运行多个进程,并支持会话分离和恢复功能。即便终端断开,后台服务也会继续运行,适合需要交互管理的长期任务

基本使用:

小提示:screen 默认前缀快捷键:Ctrl+A(tmux 是 Ctrl+B

  1. 启动新 screen 会话并命名
screen -S my_session
  1. 分离会话:按 Ctrl+A,松开,再按 D
    分离后关闭终端,内部程序持续后台运行。

  2. 列出所有存在的会话

screen -ls
# 等价别名 screen -list
  1. 恢复接入会话
screen -r my_session   # 通过会话名接入
screen -r 会话编号     # 通过编号接入

# 如果后台仅有一个会话,直接简写:
screen -r

补充:如果会话处于已附着状态别人占着,需要抢占:

screen -x my_session
  1. 删除(销毁)会话
    方式①:命令行外部直接杀死会话
screen -X -S my_session quit

方式②:已经进入会话内部时快捷键
Ctrl+A,松开,再按 \

按下后会弹窗确认,输入 y 销毁当前整个会话

tmux——screen 现代化替代

tmux 是一个功能强大、现代化的终端复用器,类似于 screen,但其更灵活和高效,尤其在并发管理多个会话和窗口时表现突出。它支持分屏操作、快捷键自定义等功能,非常适合并 行处理多个任务

基本使用:
  1. 启动新的 tmux 会话:
    tmux new -s my_session
    
  2. 分离会话:按 Ctrl+B 然后按 D,这个时候,关闭终端,运行的程序也不会停止运行
  3. 查看存在的会话:tmux ls
  4. 恢复会话(attach 可以简写为 a):
    tmux attach -t 会话名 或 tmux attach -t 编号
    ====如果只有 一个会话 可以直接:::tmux a==== 
    
    如果只有 一个会话 可以直接:::tmux a
  5. 删除会话:
    tmux kill-session -t 会话名
    
    或者 当激活该 session的时候,Ctrl+b后按&
功能 tmux screen
新建命名会话 tmux new -s my_session screen -S my_session
分离会话快捷键 Ctrl+B D Ctrl+A D
查看会话列表 tmux ls screen -ls
恢复会话 tmux a -t name / tmux a screen -r name / screen -r
外部销毁会话 tmux kill-session -t name screen -X -S name quit
会话内快捷键销毁 Ctrl+B & Ctrl+A \
新建窗口 Ctrl+B c Ctrl+A c
切换窗口 Ctrl+B 数字 / Ctrl+B n/p Ctrl+A 数字 / Ctrl+A n/p
重命名当前窗口 Ctrl+B , Ctrl+A A(大写A)
重命名当前会话 Ctrl+B $ Ctrl+A : 输入 sessionname 新名字
会话外重命名 tmux rename‑session -t 旧名 新名 screen原生没有直接外部改名命令,只能进入会话内部用sessionname修改
修改 和加载配置文件:
# 启用鼠标支持(点击切换窗格、调整大小、滚动)
set -g mouse on                               

# 终端标题显示会话名称(而非主机名)
set -g set-titles on
set -g set-titles-string "#S"

# --- 窗格行为设置 -----------------------------------------------------------
set -g pane-border-status top                 # 窗格标签显示在顶部
set -g pane-border-format " #{pane_index}: #S "  # 窗格标签格式:编号 + 会话名称

# --- 前缀键设置:将默认Ctrl+b改为Ctrl+s (更易操作) -------------------------
set -g prefix C-s
unbind C-s
bind C-s send-prefix

要实现这一点,按照下面的步骤操作:

  1. 创建目录(如果尚未存在):

    mkdir -p ~/.config/tmux
    
  2. 将原来的配置文件移动到 ~/.config/tmux/ 目录:

    mv ~/.tmux.conf ~/.config/tmux/tmux.conf
    
  3. 现在,tmux 会自动从 ~/.config/tmux/tmux.conf 文件加载配置。

如果你不想使用默认路径,可以通过设置 TMUX_CONF 环境变量来指定 tmux 配置文件的路径:

export TMUX_CONF=~/.config/tmux/tmux.conf
  • 修改配置后,tmux 不会自动加载新内容,必须手动执行:
    tmux source-file ~/.tmux.conf
    当然如果路径是:tmux source-file ~/.config/tmux/tmux.conf
    或者 在 tmux 内按下 前缀键(默认 Ctrl+b),输入:
    :source-file ~/.tmux.conf
    这样无需重启 tmux 即可应用更改。
    如果你想快速重载,可以在 .tmux.conf 中绑定快捷键:
    bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."
    这样在 tmux 内按 前缀键 + r 就能立即重载。

相关概念的快速 了解

GPU 以及 查看GPU信息

了解GPU的相关概念以及选型

cuda 编程相关知识

  • cuda 就是用来 在 NVIDIA 显卡上边 编程的工具,有一门课程就是:GPU并行计算,就会用到 cuda编程

    • 核心作用:让开发者直接利用 GPU 强大的多核并行算力,不再只把 GPU 用于图形渲染
    • 它包含编译器(如 nvcc)、运行时库、调试与性能分析工具等
    • CUDA 版本需与 NVIDIA 驱动匹配,否则无法正常运行
    • CUDA:NVIDIA 专属并行计算生态(事实行业标准)
    • ROCm:AMD 面向自家显卡的开源计算平台(对标 CUDA)
    • OpenCL:跨厂商通用并行标准(一次编写,多硬件运行)
  • NVLINK是什么:NVLINK 是 NVIDIA 自研的高速芯片互联总线,替代传统 PCIe,主要用于多 GPU 直连通信

    • PCIe:CPU↔GPU 通用通道,带宽低、延迟高,多卡通信绕 CPU
    • NVLink:GPU↔GPU 专用直连通道
  • HIP是什么:(Heterogeneous-Compute Interface for Portability,可移植异构计算接口)

    • AMD 推出的异构并行编程模型与运行时 API,核心目标解决 CUDA 绑定 NVIDIA 硬件的封闭问题
    • hipify 工具实现 CUDA 代码半自动迁移至 ROCm (AMD GPU 生态)
  • cudnn是什么:(CUDA Deep Neural Network library)是 NVIDIA 基于 CUDA 开发的深度学习 GPU 加速库,专门针对卷积、池化、归一化等神经网络核心操作进行高度优化。

    • cuDNN 版本必须与 CUDA 版本严格对应(如 CUDA 11.7 对应 cuDNN 8.x)
    • 在 CUDA 基础上提供深度学习算子加速
  • nvcc 是什么: NVIDIA CUDA Compiler,是 NVIDIA 官方提供的 CUDA 编译器驱动程序

    • 作用:负责编译 CUDA C/C++ 代码(.cu 文件);
# 查看驱动与支持的最高 CUDA 版本
nvidia-smi

# 查看 CUDA 编译器版本
nvcc -V

Linux

  • Linux 的目录结构 以及 常见的Shell命令

  • Linux中的文件权限包括三种:读权限、写权限、执行权限

    • 在这里插入图片描述
  • Linux中提供了三种显示服务器协议。X11和Wayland是其中两个。第三个是Mir

    • Wayland是作为一个免费的开源社区驱动的项目而开发的,目的是用现代,安全和简单的窗口系统代替X Window System(也称为X11或Xorg)
    • Mir 2.9 旨在为基于 Wayland 的 Shell 提供稳定、高性能的平台。
  • 什么是X11-Forwarding

    • Linux 的图形化界面,底层都是基于 X 协议
    • X 协议由 X server 和 X client 组成
    • 在本地显示 (X server)运行在服务器上的 GUI 程序 (X client)。这样的操作可以通过 SSH X11 Forwarding 来实现。X11 中的 X 指的就是 X 协议,11 指的是采用 X 协议的第 11 个版本
    • 有了X11 Forwarding,通过SSH连接并运行Linux上有GUI的程序,就像是在Windows下运行GUI程序一样方便
    • 要实现X11 Forwording,需要具备X Server的SSH客户端,推荐使用MobaXTerm软件,默认就带X Server程序,免费的非常好用
    • X Client部分,要安装一下软件包,要打开SSH的配置文件,将X11Forwarding修改为Yes

Python 环境管理工具——⭐

使用pyenv + pip + venv管理虚拟环境和依赖

使用 uv 管理虚拟环境和依赖

使用 conda 管理虚拟环境和依赖

2. 连接autodl平台实例

Tips

  1. 首先需要 学术认证的,这样花费少一点的
  2. 还有包月/包年一个 实例去,一天的可能刚用完,然后就抢不到后续的机子了
  3. 默认是 开机状态,关机之后选择 无卡模式开机去配置配置完之后再开机

autodl的磁盘目录

  • 容器实例是使用Docker技术进行资源划分与隔离的Container,拥有相比虚机实例性能损失少,效率高等优点
  • 在实例中查看磁盘使用情况请在终端中执行:source /root/.bashrc
    根据图片内容,已将表格信息转化为Markdown格式如下:
名称 路径 大小 性能 说明
系统盘 根目录/ 及其以下所有路径 (以下特殊路径除外) 30GB 本地盘快 实例关机数据不会丢失。一般系统依赖以及Python安装包都会安装在系统盘下,也可以存放代码等小容量的数据;在迁移实例时会进行迁移,保存镜像时会保存至镜像中。
数据盘 /root/autodl-tmp 50GB起可扩容 本地盘快 实例关机数据不会丢失。可存放读写IO要求高的数据。但不能保存至镜像中。如果需要将数据盘的数据进行迁移,请参考迁移实例(同地区)
AutoDL文件存储 /root/autodl-fs 免费20GB超出容量计费 网络盘一般 可以实现同一地区不同实例间的文件同步共享
公共数据 /root/autodl-pub 只读 网络盘慢 平台常用公共数据、公共模型的存放目录。只读、不支持写文件
  • 在AutoDL实例中安装的系统软件以及用内置的miniconda安装的python依赖,都是安装在了系统盘中
  • JupyerLab的工作路径是/root,数据盘、网盘、公共数据目录都在/root目录下
  • 支持将容器实例的系统盘(即系统环境)保存为镜像,供其他实例使用,避免重复配置系统环境

autodl中修改下载源

autodl里面自动配置了channel:::pip和conda使用国内的源能加速下载依赖包,但是网络高峰时如果某个源较慢,那么可以切换其他源提高下载速度,特别是阿里云的源高峰时有限速,可以通过autopannel查看修改
在这里插入图片描述

AutoDL-VScode联动教程

arc解压缩工具的命令

  • arc 不是 Linux 原生工具,也不是 Linux 系统自带的标准工具(比如 unzip/tar 才是原生的),而是 AutoDL 平台为了简化用户操作定制的扩展工具
    • 但这个工具本质是一个可执行文件,普通 Linux 系统(只要能连接这个地址)一般也能下载使用,不需要依赖 AutoDL 平台的连接
  • AutoDL 封装 arc 的目的是简化解压操作—— 不管是 .zip/.tar.gz/.7z 等格式,都能用 arc decompress 文件名 一键解压,不用记不同格式的解压命令
    • arc 会默认将文件解压到当前终端所在的目录(即 pwd 显示的目录),且解压后的文件结构和压缩包内一致
    • 支持解压格式:.tar, .zip, .rar, .7z,支持压缩/打包格式:.zip,.tar
  • 如果你的普通 Linux 系统无法下载 arc用 Linux 原生的 unzip/tar/7z 等工具也能完成所有解压操作
    • Linux 很少使用.rar的,忘记把!
    • 处理 .zip:unzip(需安装 unzip 包)
    • 处理 .tar.gz/.tar.bz2:tar(系统默认自带)
    • 处理 .7z:7z(需安装 p7zip-full 包)
# 下载 arc 工具到 /usr/bin 目录(系统全局可执行)
curl -L -o /usr/bin/arc http://autodl-public.ks3-cn-beijing.ksyun.com/tool/arc
# 赋予可执行权限
chmod +x /usr/bin/arc
# 验证是否安装成功
arc --help  # 若能输出帮助信息,说明可用
# 压缩/打包
arc compress xxx.zip path/to/directory
# 统一解压
arc decompress 文件名
# 或者解压到指定目录
arc decompress xxx.zip path/to/directory

3. 连接实验室机房 进行深度学习

安装Anaconda

  • 在自己的账号下跑实验,不会和其他人的实验发送资源冲突的,因为不是root用户没有权限更改其他用户的文件
  • 一般都会在服务器下载 Anaconda 的,就像modelScope、autodl 都会内置的!!!
  • 本地开发使用vscode的,但是服务器会下载Anaconda,因为内存大但是内置了包而且可以用来管理虚拟环境
    • jupyter notebook:设置——注意+语言;查看——显示行号

但是更推荐 使用miniconda 进行管理

  • 下载安装配置:https://blog.csdn.net/m0_74133525/article/details/152050161?fromshare=blogdetail&sharetype=blogdetail&sharerId=152050161&sharerefer=PC&sharesource=m0_74133525&sharefrom=from_link

cuda版本的 确定

服务器环境配置

使用注意

  • 管理员通过useradd命令可以新建一个普通用户,使用passwd命令设置用户密码。
    • 在新建用户(假设用户名叫test)的同时会在/home目录下自动生成和用户名同名的文件夹,并且改文件夹的所有者为test,所属组为test组
  • 务必使用miniconda管理环境
  • 由于安全原因,AMD、A800服务器不联网,所有安装需要本地上传安装包进行安装,4090服务器可联网
    • 只需要在配环境的时候联网,训练和测试模型时不需要。出于安全考虑,A800服务器平时不要联网
  • 由于存储大小限制,代码 等可以存储在用户目录下(不超过30G),数据、模型权重请存储于/nas_group/[username] (4090) 和/data/[username] (A800)
    • /data/shilx/EchoJEPA/datasets 存放数据集
    • /data/shilx/EchoJEPA/checkpoints 存放我们保存的模型权重
    • /data/shilx/EchoJEPA/outputs 存放模型的输出
    • /data/shilx/EchoJEPA/backup 存放备份文件
  • 保管好用户名和密码,若重设密码必须包括大写字母、小写字母和数字
  • 账号只能个人使用,严禁将账号外借,发现即封号

下载minconda

  • https://blog.csdn.net/m0_74133525/article/details/152050161?fromshare=blogdetail&sharetype=blogdetail&sharerId=152050161&sharerefer=PC&sharesource=m0_74133525&sharefrom=from_link
  1. 下载安装包
  2. 执行命令,安装一下去
    bash Miniconda3-latest-Linux-x86_64.sh
    即可进行安装,需要注意的是最后的init需选择yes,即可自动将miniconda3添加到环境变量中,环境变量在.bashrc文件中。
  3. 刷新配置
    source .bashrc

添加CUDA 到自己账户下

  • 将服务器已有的cuda放入自己账号的环境变量中。
    打开.bashrc文件,将以下命令复制粘贴至.bashrc文件中,并保存。(以下命令需注意cuda版本号,A800服务器cuda版本为12.2,4090服务器cuda版本为11.7)
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=$PATH:/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
export CUDA_HOME=/usr/local/cuda-12.2

修改完.bashrc文件后,需在命令行中输入source .bashrc来激活环境变量。激活完之后执行nvcc -V 就可以看到相应cuda版本了

export CUDA_HOME=/usr/local/cuda-12.1
export PATH=$CUDA_HOME/bin:${PATH}
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:${LD_LIBRARY_PATH}

创建虚拟环境

命令行中输入

conda create -n pytorch_37 python=3.7

创建一个名为pytorch_37的虚拟环境,环境中python的版本是3.7,
注意虚拟环境创造在左侧目录anaconda3文件夹下的envs文件夹下
该环境即为我们后续运行深度学习代码所需的环境。

进入虚拟环境,安装 pytorch 以及其他依赖

命令行中输入

conda activate pytorch_37

即可进入刚创建好的虚拟环境中。括号里的base变成了pytorch_37,代表我们已经进入了虚拟环境pytorch_37中

安装方法:

第一种方法:pytorch官网https://pytorch.org/,找到对应的command进行pytorch的安装。这种方法由于镜像不稳定,可能安装较慢。
比如:conda install -c pytorch -c nvidia pytorch torchvision pytorch-cuda=12.1
在conda环境中安装pytorch,查看合适的pytorch版本可以 点击参考这里哦!!!不过还是问AI 方便哈哈
第二种方法:下载pytorch的whl文件链接,下载到本地后上传至服务器pip install,该方法适用在镜像不稳定的情况下离线配置环境。

至此,pytorch,cuda,cuddn都已经适配完成。

验证pytorch、cuda、cuddn

命令行中输入python,进入python的命令下

依次输入如下命令:

import torch               # 若正常则静默
a = torch.tensor(1.)       # 若正常则静默
a.cuda()                   # 若正常则返回 tensor(1.,device='cuda:0')
from torch.backends import cudnn       # 若正常则静默cudnn.is_available()                   # 若正常则返回 True
cudnn.is_acceptable(a.cuda())          # 若正常则返回 True

有时间再去看:性能提升/压榨

4.连接公司内网进行 开发

在这里插入图片描述

内容首先,请转到这里哦,->🦄

Linux服务器重启后,挂载的数据盘丢失,需要重新挂载

  • 挂载的硬盘在重启后消失通常是因为没有配置自动挂载
  • 关键是 编辑fstab文件实现自动挂载,一劳永逸
    • /etc的名称来源于法语“et cetera”,意为“等等”。最初,这个目录用于存放各种杂项文件,随着系统复杂度的增加,其功能逐渐明确为“系统配置中心”
    • /etc/passwd:用户数据库,包含用户的基本信息。
    • /etc/shadow:存储用户的加密密码,只有root用户可读。
    • /etc/fstab:文件系统挂载表,定义了系统启动时挂载的文件系统
      • File System Table
    • /etc/init.d/:存放系统服务的启动脚本,控制服务的启动和停止
# 挂载硬盘
sudo mount /dev/sda3 /data
# 编辑fstab文件以实现自动挂载
sudo vi /etc/fstab
# 查看 UUID:blkid(Block ID,推荐 UUID一起配置上去,因为设备名易变)
# 添加以下内容到fstab文件中
/dev/sda3 /data ext4 defaults 0 0
# 验证配置是否正确
sudo mount -a(挂载 fstab 里所有 noauto 以外条目)
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐