Server - 使用 Docker 配置 PyTorch 研发环境

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/148421901

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


Docker

建议使用 Docker 配置 PyTorch 研发环境,原因是部分机器配置差异较大,而且环境各不相同,导致安装到最后仍然无法启动训练任务,浪费大量时间。建议直接使用 Docker + Conda(Mamba) 环境构建虚拟环境,即可支持多数任务。

1. 网络代理

常用的 GitHub 下载较慢,建议使用代理,提速。

使用特定的网络代理,即:

export https_proxy=http://xxx:80
export http_proxy=http://xxx:80unset https_proxy http_proxy

xxx 是 IP 地址。

或 使用在线的免费代理,即:https://ghproxy.link/

# https://ghfast.top
git clone https://ghfast.top/https://github.com/hiyouga/LLaMA-Factory.git   # 示例

注意:免费代理可能失效,需要实时查看。

Huggingface 环境,参考:https://hf-mirror.com/:

export HF_ENDPOINT=https://hf-mirror.com

2. 环境变量

打印系统环境变量:

printenv

配置大模型相关的环境变量,写入 ~/.bashrc 如下:

export WORK_DIR="xxx"
export TORCH_HOME="$WORK_DIR/torch_home/"
export HF_HOME="$WORK_DIR/huggingface/"
export HUGGINGFACE_TOKEN="xxx"
export MODELSCOPE_CACHE="$WORK_DIR/modelscope_models/"
export MODELSCOPE_API_TOKEN="xxx"
export CUDA_HOME="/usr/local/cuda"
export OMP_NUM_THREADS=64

3. Docker

建议使用 Nvidia 的镜像,其中包含默认的配置与环境:https://docker.aityp.com/r/docker.io/nvcr.io/nvidia/pytorch

拉取 Docker 镜像(国内代理),建议使用 24.12-py3 版本,不要使用最新版本,兼容异常:

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nvcr.io/nvidia/pytorch:24.12-py3

启动 Docker 的标准模版,即:

docker run -itd \
--name [your name] \
--gpus all \
--shm-size=128g \
--memory=256g \
--cpus=64 \
--restart=unless-stopped \
--ipc=host \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v [your path]:[your path] \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
--privileged \
--network host \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nvcr.io/nvidia/pytorch:24.12-py3 \
/bin/bash

4. 虚拟环境

建议,使用 Conda 或 Mamba,以 Mamba 为例:

"${SHELL}" <(curl -L micro.mamba.pm/install.sh)

手动下载模式,直接下载 micro.mamba.pm/install.sh,即 GitHub 路径,同时 替换代理 https://ghfast.top/

配置 pip 源:

# docker 优先级
rm -rf /usr/pip.conf
rm -rf /root/.config/pip/pip.conf
rm -rf /etc/pip.conf
rm -rf /etc/xdg/pip/pip.conf# 配置其他源
mkdir ~/.pip
vim ~/.pip/pip.conf[global]
no-cache-dir = true
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

安装 torch_def 环境:

micromamba create -n torch_def python=3.11
pip3 install torch torchvision torchaudio --timeout=100

下载速度较慢,避免超时 --timeout=100

验证 PyTorch 环境:

import torch
print(torch.__version__)  			# 2.7.0+cu126
print(torch.cuda.is_available())  	# True

下载相关 Python 包:

pip install datasets accelerate bitsandbytes peft swanlab sentencepiece trl deepspeed modelscope
pip install -U "huggingface_hub[cli]"

配置下载 Huggingface 模型与数据集,参考:

huggingface-cli download Qwen/Qwen3-8B --local-dir Qwen/Qwen3-8B
huggingface-cli download --repo-type dataset FreedomIntelligence/medical-o1-reasoning-SFT --local-dir FreedomIntelligence/medical-o1-reasoning-SFT

参考数据集:FreedomIntelligence/medical-o1-reasoning-SFT

其他

已优化的 Mamba 安装文件 mamba_install.sh,如下:

#!/bin/shset -eu# Detect the shell from which the script was called
parent=$(ps -o comm $PPID |tail -1)
parent=${parent#-}  # remove the leading dash that login shells have
case "$parent" in# shells supported by `micromamba shell init`bash|fish|xonsh|zsh)shell=$parent;;*)# use the login shell (basename of $SHELL) as a fallbackshell=${SHELL##*/};;
esac# Parsing arguments
if [ -t 0 ] ; thenprintf "Micromamba binary folder? [~/.local/bin] "read BIN_FOLDERprintf "Init shell ($shell)? [Y/n] "read INIT_YESprintf "Configure conda-forge? [Y/n] "read CONDA_FORGE_YES
fi# Fallbacks
BIN_FOLDER="${BIN_FOLDER:-${HOME}/.local/bin}"
INIT_YES="${INIT_YES:-yes}"
CONDA_FORGE_YES="${CONDA_FORGE_YES:-yes}"# Prefix location is relevant only if we want to call `micromamba shell init`
case "$INIT_YES" iny|Y|yes)if [ -t 0 ]; thenprintf "Prefix location? [~/micromamba] "read PREFIX_LOCATIONfi;;
esac
PREFIX_LOCATION="${PREFIX_LOCATION:-${HOME}/micromamba}"# Computing artifact location
case "$(uname)" inLinux)PLATFORM="linux" ;;Darwin)PLATFORM="osx" ;;*NT*)PLATFORM="win" ;;
esacARCH="$(uname -m)"
case "$ARCH" inaarch64|ppc64le|arm64);;  # pass*)ARCH="64" ;;
esaccase "$PLATFORM-$ARCH" inlinux-aarch64|linux-ppc64le|linux-64|osx-arm64|osx-64|win-64);;  # pass*)echo "Failed to detect your OS" >&2exit 1;;
esacif [ "${VERSION:-}" = "" ]; thenRELEASE_URL="https://ghfast.top/https://github.com/mamba-org/micromamba-releases/releases/latest/download/micromamba-${PLATFORM}-${ARCH}"
elseRELEASE_URL="https://ghfast.top/https://github.com/mamba-org/micromamba-releases/releases/download/${VERSION}/micromamba-${PLATFORM}-${ARCH}"
fi# Downloading artifact
mkdir -p "${BIN_FOLDER}"
if hash curl >/dev/null 2>&1; thencurl "${RELEASE_URL}" -o "${BIN_FOLDER}/micromamba" -fsSL --compressed ${CURL_OPTS:-}
elif hash wget >/dev/null 2>&1; thenwget ${WGET_OPTS:-} -qO "${BIN_FOLDER}/micromamba" "${RELEASE_URL}"
elseecho "Neither curl nor wget was found" >&2exit 1
fi
chmod +x "${BIN_FOLDER}/micromamba"# Initializing shell
case "$INIT_YES" iny|Y|yes)case $("${BIN_FOLDER}/micromamba" --version) in1.*|0.*)shell_arg=-sprefix_arg=-p;;*)shell_arg=--shellprefix_arg=--root-prefix;;esac"${BIN_FOLDER}/micromamba" shell init $shell_arg "$shell" $prefix_arg "$PREFIX_LOCATION"echo "Please restart your shell to activate micromamba or run the following:\n"echo "  source ~/.bashrc (or ~/.zshrc, ~/.xonshrc, ~/.config/fish/config.fish, ...)";;*)echo "You can initialize your shell later by running:"echo "  micromamba shell init";;
esac# Initializing conda-forge
case "$CONDA_FORGE_YES" iny|Y|yes)"${BIN_FOLDER}/micromamba" config append channels conda-forge"${BIN_FOLDER}/micromamba" config append channels nodefaults"${BIN_FOLDER}/micromamba" config set channel_priority strict;;
esac

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

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

相关文章

HarmonyOS5.0——CodeGenie:鸿蒙生态的AI编程革命​

​​CodeGenie&#xff1a;鸿蒙生态的AI编程革命​​ 华为推出的 ​​CodeGenie​​ 是集成于 DevEco Studio 的 AI 辅助编程工具&#xff0c;专为 HarmonyOS 应用开发设计。它通过深度优化 ArkTS 和 C 语言的代码生成能力&#xff0c;显著提升开发效率&#xff0c;降低鸿蒙生…

大模型模型部署和暴露接口

创建环境 激活案件 安装相关依赖 conda create -n fastApi python3.10 conda activate fastApi conda install -c conda-forge fastapi uvicorn transformers pytorch pip install safetensors sentencepiece protobuf 新建文件夹 mkdir App cd App touch main.py 复制代码…

Redis初入门

Nosql&#xff1a;Not-Only SQL&#xff08;泛指非关系型数据库&#xff09;&#xff0c;作为关系型数据库的补充 作用&#xff1a;应对基于海量用户和海量数据前提下的数据处理问题 redis&#xff1a;C语言开发的一个开源的高性能键值对数据库 特征&#xff1a; 1、数据之…

【原神 × 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密!

【原神 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密! 作者:星之辰 标签:#原神 #二叉树 #天赋树 #任务分支 #圣遗物强化 #算法科普 发布时间:2025年6月 总字数:6000+ 一、引子:提瓦特大陆的“树型奥秘” 你是否曾留意过《原神》角色面板的天赋树? 升级技能…

C++信息学竞赛中常用函数的一般用法

在C 信息学竞赛中&#xff0c;有许多常用函数能大幅提升编程效率。下面为你介绍一些常见函数及其一般用法&#xff1a; 一、比较函数 1、max()//求出a&#xff0c;b的较大值 int a10,b5,c;cmax(a,b);//得出的结果就是c等于10. 2、min()//求出a&#xff0c;b的较小值 int a1…

Linux【3】-----系统框架概述

系统架构 文件系统 linux一定需要挂载操作系统 一切皆文件 三个文件 引导文件 uboot.bin内核镜像 zImage文件系统镜像 system.img 设备树文件&#xff08;属于内核&#xff09; 应用程序编程 arm中通过软中断实现 各程序的构成 文件I/O 5种I/O模型 阻塞非阻塞信号多…

Tensorrt python api 10.11.0笔记

关于Tensorrt的python api文档阅读翻译加总结 文档源地址 Overview Getting started with TensorRT Installation(安装) 安装可参考:官方地址 Samples 关于样例的内容可参考:样例地址 Operator Documentation 有关更多信息&#xff08;包括示例&#xff09;&#xff0…

电镀机的阳极是什么材质?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;点击加入&#xff09;里的学员问&#xff1a;电镀的阳极有什么讲究&#xff1f;什么是可溶性阳极和非可溶性阳极&#xff1f; 什么是可溶性阳极与非可溶性阳极&#xff1f; 可溶性阳极 阳极本身就是…

前段三剑客之JavaScript-02

目录 简介 核心 函数 字符串对象 事件 运算符和控制语句 DOM 正则表达式 BOM JSON 简介 JavaScript由JavaScript语法&#xff0c;DOM和BOM组成 JS中提供了一些输入输出语句&#xff1a; alert(); //浏览器弹出警示框 console.log(); //控制台打印 prompt(); //浏览器…

Qiskit:量子计算模拟器

参考文献&#xff1a; IBM Qiskit 官网Qiskit DocumentationQiskit Benchpress packageQiskit Algorithms package量子计算&#xff1a;基本概念常见的几类矩阵&#xff08;正交矩阵、酉矩阵、正规矩阵等&#xff09;Qiskit 安装指南-博客园使用Python实现量子电路模拟&#x…

【Elasticsearch】Elasticsearch 核心技术(二):映射

Elasticsearch 核心技术&#xff08;二&#xff09;&#xff1a;映射 1.什么是映射&#xff08;Mapping&#xff09;1.1 元字段&#xff08;Meta-Fields&#xff09;1.2 数据类型 vs 映射类型1.2.1 数据类型1.2.2 映射类型 2.实际运用案例案例 1&#xff1a;电商产品索引映射案…

serv00 ssh登录保活脚本-邮件通知版

适用于自己有服务器情况&#xff0c;ssh定时登录到serv00&#xff0c;并在登录成功后发送邮件通知 msmtp 和 mutt安装 需要安装msmtp 和 mutt这两个邮件客户端并配置&#xff0c;参考如下文章前几步是讲配置这俩客户端的&#xff0c;很简单&#xff0c;不再赘述 用Shell脚本实…

前端 Electron 桌面应用学习笔记

前端 Electron 桌面应用学习笔记 介绍Electron是什么?为什么选择Electron?创建你的第一个桌面应用程序启动项目运行结果截图打开调试面板方法生命周期函数常用配置配置窗口标题配置小图标隐藏菜单栏关闭调试面板是否可以使用Node.js隐藏 Electron 标题、小图标和菜单栏获取窗…

LeetCode - 94. 二叉树的中序遍历

题目 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 什么是中序遍历 二叉树的中序遍历是按照"左-根-右"的顺序访问二叉树中的所有节点。 具体过程&#xff1a; 先遍历左子树&#xff08;递归&#xff09;然后访问根节点最后遍历右子树&#xff…

PyTorch——搭建小实战和Sequential的使用(7)

import torch from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linearclass TY(nn.Module):def __init__(self):"""初始化TY卷积神经网络模型模型结构&#xff1a;3层卷积池化&#xff0c;2层全连接设计目标&#xff1a;处理32x32像素的…

C#、VB.net——如何设置窗体应用程序的外边框不可拉伸

以Visual studio 2015为例&#xff0c;具体操作如下&#xff1a; 1、将窗体的“FormBorderStyle”属性值修改为“FixedSingle”&#xff1a; 2、点击“格式”——“锁定控件”&#xff1a; 这样生成的程序边框即可固定住&#xff0c;无法拉伸。

深入了解NIO的优化实现原理

网络 I/O 模型优化 网络通信中&#xff0c;最底层的就是内核中的网络 I/O 模型了。随着技术的发展&#xff0c;操作系统内核的网络模型衍生出了五种 I/O 模型&#xff0c;《UNIX 网络编程》一书将这五种 I/O 模型分为阻塞式 I/O、非阻塞式 I/O、I/O 复用、信号驱动式 I/O 和异步…

【前端】vue3性能优化方案

以下是Vue 3性能优化的系统性方案&#xff0c;结合核心优化策略与实用技巧&#xff0c;覆盖渲染、响应式、加载、代码等多个维度&#xff1a; ⚙️ 一、渲染优化 精准控制渲染范围 v-if vs v-show&#xff1a; v-if&#xff1a;条件为假时销毁DOM&#xff0c;适合低频切换场景&…

在MATLAB中使用自定义的ROS2消息

简明结论&#xff1a; 无论ROS2节点和MATLAB运行在哪&#xff0c;MATLAB本机都必须拥有自定义消息源码并本地用ros2genmsg生成&#xff0c;才能在Simulink里订阅这些消息。只要你想让MATLAB或Simulink能识别自定义消息&#xff0c;必须把消息包源码(.msg等)拷到本机指定目录&a…

spring重试机制

数据库死锁处理与重试机制实现指南 1. 业务场景 1.1 问题现象 高并发批量数据处理时频繁出现数据库死锁主要发生在"先删除历史数据&#xff0c;再重新计算"的业务流程中原有逐条处理方式&#xff1a;list.forEach(item -> { delete(); calculate(); }) 1.2 死…