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
繁體地址,請注明出處:http://hk.pswp.cn/news/908752.shtml
英文地址,請注明出處:http://en.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 死…