首页 > 其他分享 >大模型环境配置,包括多机多卡 conda env export > qwen_environment.yml同步环境

大模型环境配置,包括多机多卡 conda env export > qwen_environment.yml同步环境

时间:2024-07-20 13:55:04浏览次数:17  
标签:主机 多卡 environment HOST 复制 conda env 远程 bash

多机一致环境:

pip freeze > requirements.txt

装特定的torch,--extra-index-url https://download.pytorch.org/whl/cu118

pip install torch==2.2.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

要将 Conda/Mamba 环境从一台机器同步到另一台机器,最好的方法是创建一个环境规范文件,然后在目标机器上使用这个文件重新创建环境。这种方法比直接复制整个环境目录更可靠,因为它考虑了不同系统间可能存在的差异。以下是详细步骤:

  1. 在源机器上导出环境:

    bash

    复制
    conda activate Qwen
    conda env export > qwen_environment.yml
    

    这会创建一个 qwen_environment.yml 文件,其中包含环境的所有包和依赖信息。

  2. 将 yml 文件传输到目标机器:

    bash

    复制
    scp qwen_environment.yml apus@target_machine:/path/to/destination/
    

    替换 target_machine 和 /path/to/destination/ 为实际的目标机器地址和路径。

  3. 在目标机器上,使用这个 yml 文件创建新环境:

    bash

    复制
    conda env create -f /path/to/destination/qwen_environment.yml
    

    或者如果你使用 mamba:

    bash

    复制
    mamba env create -f /path/to/destination/qwen_environment.yml
    
  4. 激活新环境并验证:

    bash

    复制
    conda activate Qwen
    conda list
    

如果环境中包含一些特定于路径的包或自定义安装,你可能需要手动处理这些特殊情况。

对于大型环境,你也可以考虑以下替代方法:

  1. 使用 conda-pack(适用于完全相同的操作系统和 Python 版本):

     

    在源机器上:

    bash

    复制
    conda install conda-pack
    conda pack -n Qwen -o qwen_env.tar.gz
    

    将 tar.gz 文件传输到目标机器,然后:

    bash

    复制
    mkdir -p ~/mambaforge/envs/Qwen
    tar -xzf qwen_env.tar.gz -C ~/mambaforge/envs/Qwen
    ~/mambaforge/envs/Qwen/bin/conda-unpack
    
  2. 使用 requirements.txt(仅 Python 包):

    bash

    复制
    conda activate Qwen
    pip list --format=freeze > requirements.txt
    

    传输 requirements.txt 到目标机器,然后:

    bash

    复制
    conda create -n Qwen python=3.x  # 使用相同的 Python 版本
    conda activate Qwen
    pip install -r requirements.txt
    

每种方法都有其优缺点,选择哪种取决于你的具体需求和环境复杂度。通常,使用 conda env export 和 conda env create 是最可靠和可移植的方法。

一、同步权重

./scp_zeng.sh /data/zengzijian/Qw
en2-57B-A14B /data/zengzijian/Qwen2-57B-A14B gpu004 gpu009
#!/bin/bash

# 检查至少提供了一个参数
if [ "$#" -lt 2 ]; then
    echo "Usage: $0 <file_or_directory_to_transfer> <target_directory_on_remote_server> [optional: remote_hosts...]"
    exit 1
fi

FILE_OR_DIR_TO_TRANSFER=$1
TARGET_DIRECTORY=$2
USER="zeng" # 定义远程主机上的用户

# 如果提供了远程主机参数,则使用它们;否则,使用默认主机列表
if [ "$#" -gt 2 ]; then
    shift 2 # 移除前两个参数
    REMOTE_HOSTS=("$@") # 剩余的所有参数都是远程主机
else
    # 定义默认远程主机列表
    REMOTE_HOSTS=("gpu004" "gpu006")
fi

# 循环遍历每个远程主机并执行SCP命令传输文件或目录
for HOST in "${REMOTE_HOSTS[@]}"; do
    echo "Creating target directory on $USER@$HOST:$TARGET_DIRECTORY"
    ssh "$USER@$HOST" "mkdir -p $TARGET_DIRECTORY"
    
    echo "Starting transfer of $FILE_OR_DIR_TO_TRANSFER to $USER@$HOST:$TARGET_DIRECTORY"
    scp -r "$FILE_OR_DIR_TO_TRANSFER" "$USER@$HOST:$TARGET_DIRECTORY" && echo "Transfer of $FILE_OR_DIR_TO_TRANSFER to $HOST completed."
done

echo "All transfers completed."

文件同步脚本解释:

claude 3.5 sonnet

同步脚本:

bash

复制

#!/bin/bash

这一行指定使用 bash 解释器来执行此脚本。

bash

复制

if [ "$#" -lt 2 ]; then
    echo "Usage: $0 <file_or_directory_to_transfer> <target_directory_on_remote_server> [optional: remote_hosts...]"
    exit 1
fi

这段代码检查脚本至少有两个参数。如果参数少于2个,它会打印使用说明并退出脚本(退出状态为1,表示错误)。

FILE_OR_DIR_TO_TRANSFER=$1
TARGET_DIRECTORY=$2
USER="zeng" # 定义远程主机上的用户

这里将第一个参数赋值给 FILE_OR_DIR_TO_TRANSFER,第二个参数赋值给 TARGET_DIRECTORY,并定义了远程主机上的用户名为 "zeng"。

bash

复制

if [ "$#" -gt 2 ]; then
    shift 2 # 移除前两个参数
    REMOTE_HOSTS=("$@") # 剩余的所有参数都是远程主机
else
    # 定义默认远程主机列表
    REMOTE_HOSTS=("gpu004" "gpu006")
fi

这段代码检查是否提供了额外的参数(远程主机)。如果有,它会移除前两个参数,并将剩余的所有参数作为远程主机列表。如果没有额外参数,它会使用默认的主机列表。

bash

复制

for HOST in "${REMOTE_HOSTS[@]}"; do

这行开始一个循环,遍历所有指定的远程主机。

bash

复制

    echo "Creating target directory on $USER@$HOST:$TARGET_DIRECTORY"
    ssh "$USER@$HOST" "mkdir -p $TARGET_DIRECTORY"

这两行为每个远程主机创建目标目录。它首先打印一条消息,然后使用 SSH 在远程主机上执行 mkdir 命令。

bash

复制

    echo "Starting transfer of $FILE_OR_DIR_TO_TRANSFER to $USER@$HOST:$TARGET_DIRECTORY"
    scp -r "$FILE_OR_DIR_TO_TRANSFER" "$USER@$HOST:$TARGET_DIRECTORY" && echo "Transfer of $FILE_OR_DIR_TO_TRANSFER to $HOST completed."

这部分开始文件传输。它首先打印开始传输的消息,然后使用 scp 命令递归地复制文件或目录到远程主机。如果传输成功,它会打印一条完成消息。

bash

复制

done

这标志着循环的结束。

bash

复制

echo "All transfers completed."

当所有传输都完成后,脚本打印这条最终消息。

这个脚本的主要功能是将指定的文件或目录复制到一个或多个远程主机上。它允许用户指定要传输的内容、目标目录和远程主机列表,如果没有指定远程主机,则使用默认列表。

标签:主机,多卡,environment,HOST,复制,conda,env,远程,bash
From: https://blog.csdn.net/sinat_37574187/article/details/140433177

相关文章

  • ubuntu 20 pyenv安装python环境
    安装pyenvgitclonehttps://github.com/pyenv/pyenv.git~/.pyenv或者自动安装程序curlhttps://pyenv.run|bash依赖库sudoapt-getupdatesudoapt-getupgradesudoapt-getinstallgccmakezlib1g-devdist-upgradesudoapt-getinstalllibbz2-devbuild-essenti......
  • OpenVX生命周期杂谈
    OpenVX生命周期杂谈1.OpenVX上下文生命周期OpenVX上下文的生命周期非常简单,如图2-7所示。 图2-7.OpenVX上下文的生命周期模型2.图形生命周期如图2-8所示,OpenVX在图形生命周期中有四个主要阶段。1)构造:图形通过vxCreateGraph创建,节点通过数据对象连接在一起。2)验证:检查......
  • 运行rootcrs.pl 报错(Can't locate Env.pm)
    运行rootcrs.pl-deconfig-force-verbose报错(Can'tlocateEnv.pm) 1、一套11gR2RAC测试环境,折腾崩溃了,打算deconfig重构集群,于是运行了如下命令:[root@11grac111grac1]#/u01/app/11.2.0.4/grid/crs/install/rootcrs.pl-deconfig-force-verboseCan'tlocateEnv.pm......
  • pip安装错误:error: externally-managed-environment
    pip安装出错:error:externally-managed-environment×Thisenvironmentisexternallymanaged╰─>ToinstallPythonpackagessystem-wide,tryaptinstallpython3-xyz,wherexyzisthepackageyouaretryingtoinstall.参考:https://stackoverflow.com/q......
  • 模型部署 - TensorRT、OpenVINO 和 triton 之间的关系
    1.共同目标-深度学习模型部署优化   这三者都是用于优化和部署深度学习模型的工具和框架,目标是提高模型在服务端的推理性能。2.技术侧重点不同TensorRT侧重于针对NvidiaGPU硬件进行深度学习模型的优化与加速。OpenVINO则针对InterCPU和FPGA等硬件进行模拟优化。......
  • Rocky Linux/Redhat8运行Calibre2022报错:Software tree is for environment VCO=aoj
    运行出现了错误:virserver.tclerror:ERROR:CurrentexecutionenvironmentisVCO=aok.SoftwaretreeisforenvironmentVCO=aoj。即calibre软件版本为aoj,但当前的环境是aok。从官网查询calibre的roadmap:http://calibre.mentorcloudservices.com/docs/Calibre_OS_Roadmap.......
  • Asp.NET Core WebAPI 设置环境变量值ASPNETCORE_ENVIRONMENT
    默认情况下发布后的环境变量是Production方式一:在文件夹PublishProfiles下的FolderProfile.pubxml文件增加配置<Project><PropertyGroup><EnvironmentName>Development</EnvironmentName></PropertyGroup></Project>表示发布后通过builder.Environment.Env......
  • ENVIFormat开源样本库使用教程
    前段时间分享了两个开源样本库:GID-ENVIFormat和Five-Billion-Pixels-ENVIFormat样本库。这两个样本库均包含大量影像底图和高质量的样本数据。GID-ENVIFormat样本库包含5类别和15类别样本数据,Five-Billion-Pixels-ENVIFormat包含24类别样本数据。有关样本库数据的获取可参考:GID-E......
  • OpenVX非线性滤波器
    OpenVX非线性滤波器在输入图像的窗口上计算非线性滤波器。输出图像的大小应与输入图像的大小相同。属性VX_CONTEXT_NONLINEAR_MAX_DIMENSION,允许用户查询vxNonLinearFilterNode实现所支持的最大非线性滤波器。实现必须支持所有维度(高度或宽度,不一定相同),直到该属性的值。此属性......
  • ENVI无缝镶嵌、拼接栅格数据的方法
      本文介绍基于ENVI软件,利用“SeamlessMosaic”工具实现栅格遥感影像无缝镶嵌的操作。  在遥感图像镶嵌拼接:ENVI的PixelBasedMosaicking工具操作方法这篇文章中,我们介绍了在ENVI软件中通过“PixelBasedMosaicking”工具实现栅格遥感影像的镶嵌的方法。这一工具虽然可以......