拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Linux服务器深度学习环境部署指南:从SSH连接到PyTorch GPU验证

实验室服务器怎么用手把手教你 Linux 远程部署深度学习环境AnacondaPyTorchGPU如果你刚拿到一台实验室的 Linux 服务器想在上面跑深度学习代码但不知道从何下手这篇文章就是为你准备的。很多新手会卡在第一步怎么连上服务器、怎么装环境、怎么确认 GPU 能用。我见过太多人折腾半天最后发现是路径、权限或者驱动版本的问题。这篇文章会按实际落地的顺序带你走一遍从零到能跑 PyTorch GPU 代码的全过程。核心就三件事远程连接、环境隔离、GPU 验证。整个过程不依赖图形界面全部在命令行完成适合任何配置的 Linux 服务器。1. 先搞定远程连接和基础操作环境在开始装任何软件之前你得先能稳定地登录服务器并且熟悉最基本的命令行操作。这一步没做好后面所有步骤都可能因为网络断开、权限不足或者操作失误而前功尽弃。1.1 选择并配置远程连接工具对于 Linux 服务器最常用、最稳定的远程连接方式是 SSHSecure Shell。你不需要在服务器上安装额外软件只要服务器开启了 SSH 服务绝大多数实验室服务器默认都开启你就可以从自己的电脑连过去。Windows 用户我强烈推荐使用MobaXterm或PuTTY。MobaXterm 功能更全自带 SFTP 文件传输和 X11 转发如果需要图形界面对新手更友好。PuTTY 更轻量。这里以 MobaXterm 为例。下载安装 MobaXterm。打开后点击 “Session” - “SSH”。在 “Remote host” 栏输入服务器的 IP 地址找管理员或师兄师姐要。“Specify username” 输入你的用户名。点击 “OK” 连接首次连接会提示保存主机密钥点 “Accept”。输入密码输入时不会显示字符回车即可登录。macOS/Linux 用户直接打开终端Terminal使用ssh命令。ssh your_usernameserver_ip_address输入密码即可登录。注意连接成功后你的命令行提示符会变化表示你现在操作的是远程服务器而不是自己的本地电脑。所有后续命令都在这个远程会话中执行。1.2 掌握几个保命的 Linux 基础命令登录后你面对的是一个纯黑屏的命令行界面。别慌记住下面几个最基础、最常用的命令能解决 80% 的日常操作和问题排查。pwd打印当前工作目录。让你知道自己在哪里。ls列出当前目录下的文件和文件夹。ls -la可以查看详细信息包括隐藏文件。cd切换目录。cd ~回到家目录cd ..返回上一级。mkdir创建新目录。例如mkdir my_project。rm删除。极其危险rm -r my_folder会递归删除文件夹及其所有内容。删除前务必确认路径。cp/mv复制和移动文件。cp source_file destination。nano/vim文本编辑器。nano file.txt更简单vim功能强大但需要学习。先用nano即可。cat/head/tail查看文件内容。cat file.txt显示全部head -n 10 file.txt看前10行tail -f log.txt实时查看日志排查错误时非常有用。chmod修改文件权限。如果遇到 “Permission denied”可能需要这个命令。例如chmod x script.sh给脚本添加执行权限。wget/curl从网络下载文件。wget https://example.com/file.tar.gz。tar/unzip解压文件。.tar.gz用tar -xzvf file.tar.gz.zip用unzip file.zip。ps/top/htop查看进程和系统资源。htop更直观但可能需要安装。df -h查看磁盘空间使用情况。安装大型软件前先看看空间够不够。nvidia-smiGPU 用户专属。查看 GPU 状态、驱动版本、显存占用。装完驱动后第一个要试的命令。实操建议登录后先运行pwd和ls熟悉一下自己的家目录。然后尝试用mkdir创建一个测试目录再cd进去。这些操作是后续所有步骤的基础。2. 安装 Anaconda创建独立的 Python 环境为什么一定要用 Anaconda或 Miniconda因为实验室服务器通常是多人共用每个人、每个项目需要的 Python 版本和库版本可能完全不同。直接装在系统 Python 里会导致版本冲突俗称“把环境搞炸了”。Conda 可以为你创建完全隔离的虚拟环境环境之间互不干扰这是团队协作和项目复现的基石。2.1 下载与安装 Anaconda确定安装位置通常安装在你的家目录下。先cd ~回到家目录。获取安装脚本从清华大学开源软件镜像站下载速度更快。wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.02-1-Linux-x86_64.sh版本号可能会更新可以去镜像站页面查看最新版链接。运行安装脚本bash Anaconda3-2024.02-1-Linux-x86_64.sh跟随提示安装一直按回车阅读许可协议输入yes同意。确认安装路径默认是~/anaconda3直接回车即可。最重要的一步安装程序会问 “Do you wish the installer to initialize Anaconda3 by running conda init?”一定要输入yes。这会将 Conda 添加到你的 shell 配置文件中让你每次登录都能直接使用conda命令。激活配置安装完成后关闭当前终端重新 SSH 登录服务器。或者执行source ~/.bashrc如果你用的是 Bash来重新加载配置。此时命令行提示符前会出现(base)表示你正处于 Conda 的 base 环境中。2.2 Conda 基础命令与镜像配置安装成功后先配置国内镜像源后续安装包会快很多。# 配置 Conda 的 channels 为清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes # 配置 Pip 的镜像源备用有些包可能仍需 pip 安装 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple现在掌握几个核心的 Conda 命令创建环境conda create -n your_env_name python3.9-n指定环境名例如pytorch_gpu。python3.9指定 Python 版本根据项目需要选择。激活环境conda activate your_env_name激活后提示符会变成(your_env_name)。之后所有pip或conda install操作都只影响这个环境。退出环境conda deactivate列出所有环境conda env list删除环境conda remove -n your_env_name --all谨慎操作在环境中安装包conda install package_name优先使用 Conda 安装pip install package_name如果 Conda 找不到再用 pip避坑点永远不要在(base)环境里安装项目专用的包。为每个项目创建一个独立的环境。例如马上我们就要为 PyTorch 创建一个专门的环境。3. 在独立环境中安装 PyTorchGPU 版这是最关键的一步。目标是在上一步创建的环境里安装支持 GPU 的 PyTorch并确保它能正确识别和调用服务器的 NVIDIA GPU。3.1 创建并激活 PyTorch 环境# 创建一个名为 pytorch_gpu 的环境使用 Python 3.9 conda create -n pytorch_gpu python3.9 # 激活这个环境 conda activate pytorch_gpu激活后你的命令行前缀应该是(pytorch_gpu)。3.2 查询服务器 CUDA 版本PyTorch 版本需要和服务器安装的 CUDA 工具包版本匹配。首先查询服务器 CUDA 版本。nvcc --version或者cat /usr/local/cuda/version.txt如果这两个命令都找不到可以运行nvidia-smi在输出结果的右上角通常会显示一个 “CUDA Version”例如 “12.4”。注意nvidia-smi显示的 CUDA 版本是驱动支持的最高版本实际安装的 CUDA 工具包版本可能略低。以nvcc --version的输出为准。假设我们查到的版本是CUDA 11.8。3.3 前往 PyTorch 官网获取安装命令不要凭记忆输入命令因为 PyTorch 版本、CUDA 版本和安装命令更新频繁。打开浏览器访问 PyTorch 官网 。在官网页面你会看到一个配置选择器PyTorch Build选择 Stable稳定版。Your OS选择 Linux。Package选择 Conda这样可以用我们刚配置的清华源加速。Language选择 Python。Compute Platform根据刚才查到的 CUDA 版本选择例如CUDA 11.8。如果服务器没有 GPU 或你暂时不确定可以先选 CPU 版本跑通流程但深度学习强烈建议用 GPU。选择完成后页面会生成一行安装命令。例如对于 CUDA 11.8它可能显示conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia3.4 执行安装并移除官方源直接运行官网命令可能会很慢因为它会从-c pytorch -c nvidia指定的官方频道下载。我们可以利用之前配置的清华镜像并移除-c参数让 Conda 优先从镜像站查找。更稳妥的做法是运行官网命令但 Conda 会自动从我们已配置的镜像通道中寻找匹配的包通常也能成功。如果速度慢或找不到可以尝试只安装核心的pytorch和torchvisiontorchaudio按需安装。# 尝试使用此命令conda 会从已配置的镜像中解析依赖 conda install pytorch torchvision torchaudio pytorch-cuda11.8安装过程需要确认输入y回车。这可能会花费一些时间取决于网速和包的大小。3.5 验证 PyTorch 及 GPU 是否可用安装完成后不要急着写复杂代码。先进入 Python 交互环境运行几行简单的验证命令。# 确保还在 (pytorch_gpu) 环境下 python进入 Python 后逐行输入以下命令import torch print(torch.__version__) # 打印 PyTorch 版本 print(torch.cuda.is_available()) # 最关键的一行输出应为 True print(torch.cuda.device_count()) # 查看 GPU 数量 print(torch.cuda.get_device_name(0)) # 查看第一块 GPU 的名称如果torch.cuda.is_available()返回True那么恭喜你PyTorch GPU 环境配置成功你可以看到 GPU 的型号如 Tesla V100, RTX 4090等。如果返回 False按以下顺序排查确认环境确保你是在(pytorch_gpu)环境下运行的 Python。可以用conda activate pytorch_gpu再次激活。确认安装在环境中运行conda list | grep torch查看安装的 PyTorch 包名是否包含cudatoolkit或pytorch-cuda。验证 CUDA在终端不在 Python 里运行nvidia-smi确认驱动正常GPU 信息能显示。版本匹配确认conda list中的cudatoolkit版本与nvcc --version查到的版本是否大致兼容主版本号相同即可如 11.8 和 11.7 通常兼容。有时 Conda 会安装一个独立的 CUDA 工具包与系统的不冲突这是正常现象。重新安装如果以上都不行尝试严格按照 PyTorch 官网生成的命令包含-c pytorch安装一次虽然慢但能确保渠道正确。4. 部署你的第一个深度学习项目环境准备好了接下来就是把你的代码放到服务器上并运行起来。这里涉及到文件传输、依赖安装和任务运行。4.1 将本地代码和数据传输到服务器你不能在服务器上直接写代码通常是在本地开发然后上传。有几种方式1. 使用 MobaXterm/SecureFX 等工具的图形化 SFTP 在 MobaXterm 左侧边栏你会看到一个图形化的文件浏览器显示的是服务器的文件系统。你可以直接从本地电脑拖拽文件或文件夹到服务器目录非常直观。2. 使用命令行scp命令macOS/Linux 或 Windows WSL# 将本地文件上传到服务器家目录 scp /path/to/your/local_file.py your_usernameserver_ip:~ # 将本地整个文件夹上传到服务器 scp -r /path/to/your/local_project your_usernameserver_ip:~/remote_project3. 使用rsync更高效支持增量同步rsync -avz /path/to/your/local_project/ your_usernameserver_ip:~/remote_project/建议在服务器你的家目录下建立一个清晰的项目文件夹结构例如~/projects/ ├── my_dl_project/ │ ├── src/ # 源代码 │ ├── data/ # 数据如果是小样本 │ ├── logs/ # 训练日志 │ └── checkpoints/ # 模型保存点4.2 安装项目特定依赖你的项目很可能除了 PyTorch 还需要其他库比如numpy,pandas,opencv-python,tqdm等。在本地项目根目录通常有一个requirements.txt文件。将其上传到服务器项目目录。在服务器上确保已经激活了你的 Conda 环境例如conda activate pytorch_gpu。使用 pip 安装所有依赖cd ~/projects/my_dl_project pip install -r requirements.txt注意如果requirements.txt里包含torch最好把它注释掉因为我们已经在 Conda 环境里安装了特定 CUDA 版本的 PyTorch用 pip 重装可能会覆盖或引起冲突。4.3 运行你的代码并管理长时间任务在服务器上运行 Python 脚本和本地一样python src/train.py但是深度学习训练任务动辄数小时甚至数天你不可能一直开着 SSH 窗口。一旦网络波动或电脑休眠SSH 断开正在运行的任务就会被终止。必须使用任务守护工具。1. 使用nohup最简单nohup python src/train.py train.log 21 nohup让命令忽略挂断信号SSH断开。 train.log将标准输出重定向到train.log文件。21将标准错误也重定向到标准输出即一起写入日志文件。在后台运行。 运行后会返回一个进程 IDPID。你可以用tail -f train.log实时查看日志用kill PID来终止任务。2. 使用tmux或screen更强大推荐 这两个工具可以创建虚拟终端会话即使 SSH 断开会话也会在服务器后台继续运行之后可以重新连接attach回来。安装sudo apt install tmuxUbuntu/Debian或sudo yum install tmuxCentOS/Rocky。基本使用tmux new -s session_name # 创建一个名为 session_name 的新会话 # 此时进入 tmux 会话在这里运行你的任务例如 python train.py # 按 Ctrlb然后按 d可以脱离detach当前会话回到原始终端。任务在后台继续。 tmux ls # 列出所有会话 tmux attach -t session_name # 重新连接到指定会话 tmux kill-session -t session_name # 终止指定会话screen命令类似但tmux功能更现代分屏等操作更方便。4.4 监控资源使用情况任务跑起来后你需要知道它是否在正常工作以及资源占用是否合理。查看 GPU 状态nvidia-smi。关注 “GPU-Util”GPU 利用率理想情况应接近 100%和 “Memory-Usage”显存占用。如果显存满了但利用率很低可能是数据加载DataLoader的瓶颈在 CPU 或磁盘 I/O。查看进程htop。这是一个交互式的进程查看器可以清晰看到 CPU、内存占用以及哪个进程是你的 Python 训练任务。如果htop未安装用sudo apt install htop安装。查看你的进程ps aux | grep python或ps aux | grep your_username可以找到你运行的所有 Python 进程及其 PID。5. 环境配置与任务管理中的常见问题排查即使按照步骤操作也可能会遇到各种问题。下面是一个从外到内的排查清单。5.1 连接与权限问题SSH 连接被拒绝检查 IP 地址、用户名、密码是否正确联系管理员确认 SSH 服务是否开启以及你的账号是否被禁用。Permission denied当你尝试安装软件到系统目录如/usr/local或写入某些目录时出现。永远不要使用sudo来安装 Conda 或 Pip 包到你的个人环境。正确的做法是安装在家目录下或者使用pip install --user package_name。如果需要系统级安装请联系管理员。磁盘空间不足使用df -h查看磁盘使用情况。Conda 环境和深度学习数据集可能会占用大量空间。清理旧的 Conda 环境 (conda remove -n old_env --all)或将数据存放在更大的数据盘通常挂载在/data或/mnt下。5.2 Conda 与包管理问题Conda 命令找不到安装时没有同意初始化 (conda init)。手动执行source ~/anaconda3/bin/activate然后conda init或者将export PATH~/anaconda3/bin:$PATH添加到~/.bashrc文件末尾然后source ~/.bashrc。创建环境失败可能是网络问题或镜像源暂时不可用。尝试换一个 Conda 镜像源如中科大源或者指定更低的 Python 版本。安装 PyTorch 时解决环境失败可能是依赖冲突。尝试创建一个“干净”的环境只安装 PyTorchconda create -n clean_torch python3.9 pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia。或者使用 Pip 安装pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118(CUDA 11.8为例)。5.3 PyTorch GPU 识别问题这是最高频的问题区。torch.cuda.is_available()返回 False环境确认绝对确保你在正确的 Conda 环境下运行 Python。这是最常见的原因。驱动检查nvidia-smi能正常运行吗如果不能说明 NVIDIA 驱动未安装或损坏需要联系管理员。CUDA 匹配运行python -c import torch; print(torch.version.cuda)查看 PyTorch 编译所用的 CUDA 版本。与nvcc --version或nvidia-smi显示的版本是否兼容主版本号应一致。如果不一致需要安装对应版本的 PyTorch。Conda 的 CUDA有时 Conda 安装的cudatoolkit是一个独立版本与系统的/usr/local/cuda无关。只要torch.cuda.is_available()为 True 即可不必强求系统 CUDA 版本一致。GPU 显存已占用但我的程序报错显存不足有其他进程占用了显存。用nvidia-smi查看是哪个进程PID 和用户名如果是你自己的其他任务需要先停止如果是别人的可能需要协商使用其他空闲 GPU。你可以通过设置环境变量CUDA_VISIBLE_DEVICES来指定使用哪块 GPU例如CUDA_VISIBLE_DEVICES0 python train.py使用第一块 GPU。5.4 运行任务时的典型问题程序刚开始就卡住不动可能是数据加载的问题。检查数据路径是否正确数据集是否成功解压且可读。在代码中尝试先加载一个小批次batch的数据看是否能成功。训练过程中程序崩溃无错误信息很可能是显存溢出Out Of Memory, OOM。尝试减小batch_size。在代码开头设置torch.cuda.empty_cache()清理缓存。使用nvidia-smi监控显存占用变化。日志文件train.log增长过快或没内容nohup重定向了所有输出。确保你的代码中使用了日志库如logging或适当控制了print语句的频率。对于没内容检查程序是否真的开始执行或者输出是否被缓冲了可以添加flushTrue参数。tmux会话中无法使用中文或某些快捷键检查服务器的语言环境设置 (locale)。对于深度学习训练通常英文环境即可。快捷键冲突可以学习tmux的配置修改。6. 进阶配置与生产化建议当你能成功运行单个训练脚本后可以考虑以下优化让工作流更高效、更稳定。6.1 配置 SSH 免密登录每次登录都要输密码很麻烦。可以配置 SSH 公钥认证。在本地电脑生成密钥对ssh-keygen -t rsa一直回车。将公钥上传到服务器ssh-copy-id your_usernameserver_ip需要输入一次密码。之后再次 SSH 登录就不再需要密码了。6.2 使用版本控制Git在服务器上也使用 Git 来管理代码版本。cd ~/projects/my_dl_project git init git remote add origin https://github.com/yourname/yourrepo.git # 从远程拉取代码或提交本地更改建议将大型数据文件和模型检查点添加到.gitignore。6.3 编写启动脚本将复杂的启动命令、环境变量设置写成一个 Shell 脚本例如run.sh#!/bin/bash # 激活环境 source ~/anaconda3/bin/activate pytorch_gpu # 设置 GPU export CUDA_VISIBLE_DEVICES0 # 运行训练脚本并将日志输出到带时间戳的文件 python src/train.py --config configs/my_config.yaml 21 | tee logs/train_$(date %Y%m%d_%H%M%S).log给脚本执行权限chmod x run.sh。然后就可以用./run.sh或nohup ./run.sh 来启动任务。6.4 监控与自动化使用watch命令监控watch -n 1 nvidia-smi可以每秒刷新一次 GPU 状态。使用 TensorBoard 或 WandB在代码中集成可视化工具远程在本地浏览器查看训练曲线、图像结果等。任务队列如果服务器用户很多可以考虑使用简单的任务队列系统如使用tmux脚本管理多个会话或使用更专业的工具如Slurm如果集群已安装。实验室服务器的核心价值在于其强大的计算资源。成功部署环境只是第一步更重要的是学会高效、稳定地利用它。我的建议是先花时间把单机单卡的单任务流程彻底跑通理解从连接、环境、传输到运行、监控、排错的每一个环节。这比一上来就追求分布式训练或多机并行要实际得多。当基础流程稳固后再去探索更复杂的配置和优化你会发现自己对深度学习工程落地的理解会上一个台阶。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门