华为云用户手册

  • 步骤1 安装模型 安装Megatron-DeepSpeed框架。 使用root用户SSH的方式登录GPU裸金属服务器。具体登录方式请参见SSH密钥方式登录裸金属服务器。 拉取pytorch镜像,可以选择常用的镜像源进行下载。 docker pull nvcr.io/nvidia/pytorch:21.10-py3 启动容器。 docker run -d -t --network=host --gpus all --privileged --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --name megatron-deepspeed -v /etc/localtime:/etc/localtime -v /root/.ssh:/root/.ssh nvcr.io/nvidia/pytorch:21.10-py3 执行以下命令,进入容器终端。 docker exec -it megatron-deepspeed bash 下载Megatron-DeepSpeed框架。 git clone https://github.com/bigscience-workshop/Megatron-DeepSpeed 如果git clone失败,可以尝试先下载至本地,然后复制至服务器中,在docker cp至容器中。 安装Megatron-DeepSpeed框架。 cd Megatron-DeepSpeed pip install -r requirements.txt -i http://mirrors.myhuaweicloud.com/pypi/web/simple --trusted-host mirrors.myhuaweicloud.com pip install mpi4py -i http://mirrors.myhuaweicloud.com/pypi/web/simple --trusted-host mirrors.myhuaweicloud.com 修改测试代码,注释掉以下文件的断言所在行。 vim /workspace/Megatron-DeepSpeed/megatron/model/fused_softmax.py +191 在“assert mask is None, "Mask is silently ignored due to the use of a custom kernel"”前加“#”,即: # assert mask is None, "Mask is silently ignored due to the use of a custom kernel" 数据集下载和预处理。 本实践中选择使用1GB 79K-record的JSON格式的OSCAR数据集。 下载数据集。 wget https://huggingface.co/bigscience/misc-test-data/resolve/main/stas/oscar-1GB.jsonl.xz wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt 解压数据集。 xz -d oscar-1GB.jsonl.xz 预处理数据。 python3 tools/preprocess_data.py \ --input oscar-1GB.jsonl \ --output-prefix meg-gpt2 \ --vocab gpt2-vocab.json \ --dataset-impl mmap \ --tokenizer-type GPT2BPETokenizer \ --merge-file gpt2-merges.txt \ --append-eod \ --workers 8 如果发生如下“np.float”报错,按照报错提示修改为“float”即可。 图1 预处理数据报错 数据预处理完成标识。 图2 数据预处理完成 新建data目录并移动处理好的数据。 mkdir data mv meg-gpt2* ./data mv gpt2* ./data
  • 步骤2 单机单卡训练 本小节使用上文的服务器环境和安装好的模型, 使用GP Ant8裸金属服务器, 完成单机单卡GPT-2 MEDIUM模型的训练。 创建预训练脚本文件。 执行以下命令,创建预训练脚本文件。 vim pretrain_gpt2.sh 在文件中添加以下信息。 #! /bin/bash # Runs the "345M" parameter model GPUS_PER_NODE=1 # Change for multinode config MASTER_ADDR=localhost MASTER_PORT=6000 NNODES=1 NODE_RANK=0 WORLD_SIZE=$(($GPUS_PER_NODE*$NNODES)) DATA_PATH=data/meg-gpt2_text_document CHECKPOINT_PATH=checkpoints/gpt2 DISTRIBUTED_ARGS="--nproc_per_node $GPUS_PER_NODE --nnodes $NNODES --node_rank $NODE_RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT" python -m torch.distributed.launch $DISTRIBUTED_ARGS \ pretrain_gpt.py \ --tensor-model-parallel-size 1 \ --pipeline-model-parallel-size 1 \ --num-layers 24 \ --hidden-size 1024 \ --num-attention-heads 16 \ --micro-batch-size 4 \ --global-batch-size 8 \ --seq-length 1024 \ --max-position-embeddings 1024 \ --train-iters 5000 \ --lr-decay-iters 320000 \ --save $CHECKPOINT_PATH \ --load $CHECKPOINT_PATH \ --data-path $DATA_PATH \ --vocab-file data/gpt2-vocab.json \ --merge-file data/gpt2-merges.txt \ --data-impl mmap \ --split 949,50,1 \ --distributed-backend nccl \ --lr 0.00015 \ --lr-decay-style cosine \ --min-lr 1.0e-5 \ --weight-decay 1e-2 \ --clip-grad 1.0 \ --lr-warmup-fraction .01 \ --checkpoint-activations \ --log-interval 10 \ --save-interval 500 \ --eval-interval 100 \ --eval-iters 10 \ --fp16 开始训练。 本文是单机单卡训练,使用预训练脚本参数控制: GPUS_PER_NODE=1 NNODES=1 NODE_RANK=0 执行以下命令,开始预训练。 nohup sh ./pretrain_gpt2.sh & 图3 开始预训练 实时查看训练日志,监控程序。 tail -f nohup.out 如果显示如下信息, 表示模型训练完成。 图4 模型训练完成 在训练过程中观察单GPU卡的利用率,如下: 图5 GPU利用率 查看生成的模型checkpoint。 本示例生成的模型checkpoint路径设置在“/workspace/Megatron-DeepSpeed/checkpoints/gpt2”。 ll ./checkpoints/gpt2 图6 模型checkpoint
  • 步骤3 单机多卡训练 和单机单卡训练相比, 单机多卡训练只需在预训练脚本中设置多卡参数相关即可, 其余步骤与单机单卡相同。 当前选择GPU裸金属服务器是8卡, 因此需要在预训练脚本中调整如下参数: GPUS_PER_NODE=8 调整全局批处理大小(global batch size)、微批处理大小(micro batch size)、数据并行大小(data_parallel_size)参数。三者的关系为:“global_batch_size”可被“micro_batch_size * data_parallel_size”整除。 本文设置的参数值如下: global_batch_size = 64 micro_batch_size = 4 data_parallel_size = 8 单机多卡完整的预训练脚本内容如下: #! /bin/bash # Runs the "345M" parameter model GPUS_PER_NODE=8 # Change for multinode config MASTER_ADDR=localhost MASTER_PORT=6000 NNODES=1 NODE_RANK=0 WORLD_SIZE=$(($GPUS_PER_NODE*$NNODES)) DATA_PATH=data/meg-gpt2_text_document CHECKPOINT_PATH=checkpoints/gpt2 DISTRIBUTED_ARGS="--nproc_per_node $GPUS_PER_NODE --nnodes $NNODES --node_rank $NODE_RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT" python -m torch.distributed.launch $DISTRIBUTED_ARGS \ pretrain_gpt.py \ --tensor-model-parallel-size 1 \ --pipeline-model-parallel-size 1 \ --num-layers 24 \ --hidden-size 1024 \ --num-attention-heads 16 \ --micro-batch-size 4 \ --global-batch-size 64 \ --seq-length 1024 \ --max-position-embeddings 1024 \ --train-iters 5000 \ --lr-decay-iters 320000 \ --save $CHECKPOINT_PATH \ --load $CHECKPOINT_PATH \ --data-path $DATA_PATH \ --vocab-file data/gpt2-vocab.json \ --merge-file data/gpt2-merges.txt \ --data-impl mmap \ --split 949,50,1 \ --distributed-backend nccl \ --lr 0.00015 \ --lr-decay-style cosine \ --min-lr 1.0e-5 \ --weight-decay 1e-2 \ --clip-grad 1.0 \ --lr-warmup-fraction .01 \ --checkpoint-activations \ --log-interval 10 \ --save-interval 500 \ --eval-interval 100 \ --eval-iters 10 \ --fp16 训练时监控的GPU利用率如下: 图7 GPU利用率
  • 背景信息 Megatron-DeepSpeed Megatron-DeepSpeed是一个基于PyTorch的深度学习模型训练框架。它结合了两个强大的工具:Megatron-LM和DeepSpeed,可在具有分布式计算能力的系统上进行训练,并且充分利用了多个GPU和深度学习加速器的并行处理能力。可以高效地训练大规模的语言模型。 Megatron-LM是一个用于大规模语言建模的模型。它基于GPT(Generative Pre-trained Transformer)架构,这是一种基于自注意力机制的神经网络模型,广泛用于自然语言处理任务,如文本生成、 机器翻译 和对话系统等。 DeepSpeed是开源的加速深度学习训练的库。它针对大规模的模型和分布式训练进行了优化,可以显著提高训练速度和效率。DeepSpeed提供了各种技术和优化策略,包括分布式梯度下降、模型并行化、梯度累积和动态精度缩放等。它还支持优化大模型的内存使用和计算资源分配。 GPT2 GPT2(Generative Pre-trained Transformer 2),是OpenAI组织在2018年于GPT模型的基础上发布的新预训练模型,是一个基于Transformer且非常庞大的语言模型。它在大量数据集上进行了训练,直接运行一个预训练好的GPT-2模型:给定一个预定好的起始单词或者句子,可以让它自行地随机生成后续的文本。
  • 环境准备 在ModelArts Server预购相关超强算力的GPU裸金属服务器,并选择AIGC场景通用的镜像,完成使用Megatron-DeepSpeed训练GPT2模型。本最佳实践使用以下镜像和规格: 镜像选择:Ubuntu 20.04 x86 64bit SDI3 for Ant8 BareMetal with RoCE and NVIDIA-525 CUDA-12.0。 裸金属规格选择: GP Ant8,包含8张GPU卡以及8张RoCE网卡。 关于Ant8裸金属服务器的购买,可以提工单至ModelArts云服务, 完成资源的申请。
  • GP Ant8裸金属服务器Ubuntu 20.04安装NVIDIA 515+CUDA 11.7 本小节旨在指导如何在GP Ant8裸金属服务器上(Ubuntu 20.04系统),安装NVIDIA驱动版本515、CUDA版本11.7、nvidia-fabricmanager版本515,并进行nccl-test测试。 替换apt源。 sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo apt update 安装nvidia驱动。 wget https://us.download.nvidia.com/tesla/515.105.01/NVIDIA-Linux-x86_64-515.105.01.run chmod +x NVIDIA-Linux-x86_64-515.105.01.run ./NVIDIA-Linux-x86_64-515.105.01.run 安装cuda。 # run包安装 wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run chmod +x cuda_11.7.0_515.43.04_linux.run ./cuda_11.7.0_515.43.04_linux.run --toolkit --samples --silent 安装nccl。 nccl安装可参考NCCL Documentation。 nccl和cuda版本的配套关系和安装方法参考NCL Downloads。 本文使用cuda版本是11.7,因此安装nccl的命令为: wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt update sudo apt install libnccl2=2.14.3-1+cuda11.7 libnccl-dev=2.14.3-1+cuda11.7 安装完成后可以查看: 图5 查看nccl 安装nvidia-fabricmanager。 nvidia-fabricmanager必须和nvidia driver版本保持一致。 version=515.105.01 main_version=$(echo $version | awk -F '.' '{print $1}') apt-get update apt-get -y install nvidia-fabricmanager-${main_version}=${version}-* 验证驱动安装结果:启动fabricmanager服务并查看状态是否为“RUNNING”。 nvidia-smi -pm 1 nvidia-smi systemctl enable nvidia-fabricmanager systemctl start nvidia-fabricmanager systemctl status nvidia-fabricmanager 安装nv-peer-memory。 git clone https://github.com/Mellanox/nv_peer_memory.git cd ./nv_peer_memory ./build_module.sh cd /tmp tar xzf /tmp/nvidia-peer-memory_1.3.orig.tar.gz cd nvidia-peer-memory-1.3 dpkg-buildpackage -us -uc dpkg -i ../nvidia-peer-memory-dkms_1.2-0_all.deb nv_peer_mem工作在linux内核态,安装完成后需要看是否加载到内核,通过执行“lsmod | grep peer”查看是否加载。 如果git clone拉不下来代码,可能需要先设置下git的配置: git config --global core.compression -1 export GIT_SSL_NO_VERIFY=1 git config --global http.sslVerify false git config --global http.postBuffer 10524288000 git config --global http.lowSpeedLimit 1000 git config --global http.lowSpeedTime 1800 如果安装完成后lsmod看不到nv-peer-memory,可能是由于ib驱动版本过低导致,此时需要升级ib驱动,升级命令: wget https://content.mellanox.com/ofed/MLNX_OFED-5.4-3.6.8.1/MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64.tgz tar -zxvf MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64.tgz cd MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64 apt-get install -y python3 gcc quilt build-essential bzip2 dh-python pkg-config dh-autoreconf python3-distutils debhelper make ./mlnxofedinstall --add-kernel-support 如果想安装其它更高版本的ib驱动,请参考Linux InfiniBand Drivers。比如要安装MLNX_OFED-5.8-2.0.3.0 (当前最新版本),则命令为: wget https://content.mellanox.com/ofed/MLNX_OFED-5.8-2.0.3.0/MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz tar -zxvf MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz cd MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64 apt-get install -y python3 gcc quilt build-essential bzip2 dh-python pkg-config dh-autoreconf python3-distutils debhelper make ./mlnxofedinstall --add-kernel-support 安装完nv_peer_mem, 如果想查看其状态可以输入如下指令: /etc/init.d/nv_peer_mem/ status 如果发现没有此文件,则可能安装的时候没有默认复制过来,需要复制即可: cp /tmp/nvidia-peer-memory-1.3/nv_peer_mem.conf /etc/infiniband/ cp /tmp/nvidia-peer-memory-1.3/debian/tmp/etc/init.d/nv_peer_mem /etc/init.d/ 设置环境变量。 MPI路径版本需要匹配,可以通过“ls /usr/mpi/gcc/”查看openmpi的具体版本。 # 加入到~/.bashrc export LD_LIBRARY_PATH=/usr/local/cuda/lib:usr/local/cuda/lib64:/usr/include/nccl.h:/usr/mpi/gcc/openmpi-4.1.2a1/lib:$LD_LIBRARY_PATH export PATH=$PATH:/usr/local/cuda/bin:/usr/mpi/gcc/openmpi-4.1.2a1/bin 安装编译nccl-test。 cd /root git clone https://github.com/NVIDIA/nccl-tests.git cd ./nccl-tests make MPI=1 MPI_HOME=/usr/mpi/gcc/openmpi-4.1.2a1 -j 8 编译时需要加上MPI=1的参数,否则无法进行多机之间的测试。 MPI路径版本需要匹配,可以通过“ls /usr/mpi/gcc/”查看openmpi的具体版本。 nccl-test测试。 单机测试: /root/nccl-tests/build/all_reduce_perf -b 8 -e 1024M -f 2 -g 8 多机测试(btl_tcp_if_include后面替换为主网卡名称): mpirun --allow-run-as-root --hostfile hostfile -mca btl_tcp_if_include eth0 -mca btl_openib_allow_ib true -x NCCL_DEBUG=INFO -x NCCL_IB_GID_INDEX=3 -x NCCL_IB_TC=128 -x NCCL_ALGO=RING -x NCCL_IB_HCA=^mlx5_bond_0 -x LD_LIBRARY_PATH /root/nccl-tests/build/all_reduce_perf -b 8 -e 11g -f 2 -g 8 hostfile格式: #主机私有IP 单节点进程数 192.168.20.1 slots=1 192.168.20.2 slots=1 NCCL环境变量说明: NCCL_IB_GID_INDEX=3 :数据包走交换机的队列4通道,这是RoCE协议标准。 NCCL_IB_TC=128 :使用RoCE v2协议,默认使用RoCE v1,但是v1在交换机上没有拥塞控制,可能会丢包,而且后续的交换机不会支持v1,会导致无法运行。 NCCL_ALGO=RING :nccl_test的总线bandwidth是在假定是Ring算法的情况下计算出来的。 计算公式是有假设的: 总线带宽 = 算法带宽 * 2 ( N-1 ) / N ,算法带宽 = 数据量 / 时间 但是这个计算公式的前提是用Ring算法,Tree算法的总线带宽不可以这么计算。 如果Tree算法算出来的总线带宽相当于是相对Ring算法的性能加速。算法计算总耗时减少了,所以用公式算出来的总线带宽也增加了。理论上Tree算法是比Ring算法更优的,但是Tree算法对网络的要求比Ring高,计算可能不太稳定。 Tree算法可以用更少的数据通信量完成all reduce计算,但用来测试性能不太合适。因此,会出现两节点实际带宽100,但测试出速度110,甚至130GB/s的情况。加这个参数以后,2节点和2节点以上情况的速度才会稳定一些。 测试时需要执行mpirun的节点到hostfile中的节点间有免密登录,设置SSH免密登录方法如下: 客户端生成公私钥。 执行如下命令,在本地客户端生成公私钥(一路回车默认即可)。 ssh-keygen 上面这个命令会在用户目录.ssh文件夹下创建“id_rsa.pub”(公钥)和“id_rsa”(私钥),可通过如下命令查看: cd ~/.ssh 上传公钥到服务器。 例如用户名为root,服务器地址为192.168.222.213,则将公钥上传至服务器的命令如下: ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.222.213 通过如下命令可以看到客户端写入到服务器的id_rsa.pub (公钥)内容: cd ~/.ssh vim authorized_keys 测试免密登录。 客户端通过ssh连接远程服务器,即可免密登录。 ssh root@192.168.222.213
  • 安装NVIDIA驱动 打开NVIDIA官方网站。 以Ant8规格为例,根据Ant8的详细信息和您所需的cuda版本选择驱动。 图1 驱动选择 选择后会自动出现Driver版本并下载,或者直接。 wget https://cn.download.nvidia.com/tesla/470.182.03/NVIDIA-Linux-x86_64-470.182.03.run 添加权限。 chmod +x NVIDIA-Linux-x86_64-470.182.03.run 运行安装文件。 ./NVIDIA-Linux-x86_64-470.182.03.run 至此NVIDIA-DRIVER驱动安装完成。
  • GP Vnt1裸金属服务器Ubuntu 18.04安装NVIDIA 470+CUDA 11.4 本小节旨在指导如何在GP Vnt1裸金属服务器上(Ubuntu 18.04系统),安装NVIDIA驱动版本470,CUDA版本11.4。 安装NVIDIA驱动。 apt-get update sudo apt-get install nvidia-driver-470 安装CUDA。 wget https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux.run chmod +x cuda_11.4.4_470.82.01_linux.run ./cuda_11.4.4_470.82.01_linux.run --toolkit --samples --silent 验证NVIDIA安装结果。 nvidia-smi -pm 1 nvidia-smi /usr/local/cuda/bin/nvcc -V 安装Pytorch2.0和验证CUDA验证。 PyTorch2.0所需环境为Python3.10, 安装配置miniconda环境。 miniconda安装并创建alpha环境。 wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh chmod 750 Miniconda3-py310_23.1.0-1-Linux-x86_64.sh bash Miniconda3-py310_23.1.0-1-Linux-x86_64.sh -b -p /home/miniconda export PATH=/home/miniconda/bin:$PATH conda create --quiet --yes -n alpha python=3.10 安装pytorch2.0并验证cuda状态。 在alpha环境下安装torch2.0,使用清华PIP源完成。 source activate alpha conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia python 验证torch与cuda的安装状态,输出为True即为正常。 import torch print(torch.cuda.is_available())
  • 安装Docker 部分Vnt1裸金属服务器的预置镜像中未安装Docker,您可参考以下步骤进行安装。 安装Docker。 curl https://get.docker.com | sh && sudo systemctl --now enable docker 安装NIVDIA容器插件。 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list apt-get update apt-get install -y nvidia-container-toolkit nvidia-ctk runtime configure --runtime=docker systemctl restart docker 验证Docker模式环境是否安装成功。 基于PyTorch2.0镜像验证(本案例中镜像较大,拉取时间可能较长)。 docker run -ti --runtime=nvidia --gpus all pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel bash 图3 成功拉取镜像
  • 安装nvidia-fabricmanager Ant系列GPU支持NvLink & NvSwitch,如果您使用多GPU卡的机型,需额外安装与驱动版本对应的nvidia-fabricmanager服务使GPU卡间能够互联,否则可能无法正常使用GPU实例。 nvidia-fabricmanager必须和nvidia driver版本保持一致。 以安装515.105.01版本为例。 version=515.105.01 main_version=$(echo $version | awk -F '.' '{print $1}') apt-get update apt-get -y install nvidia-fabricmanager-${main_version}=${version}-* 验证驱动安装结果:启动fabricmanager服务并查看状态是否为“RUNNING”。 nvidia-smi -pm 1 nvidia-smi systemctl enable nvidia-fabricmanager systemctl start nvidia-fabricmanager systemctl status nvidia-fabricmanager
  • GP Vnt1裸金属服务器EulerOS 2.9安装NVIDIA 515+CUDA 11.7 本小节旨在指导如何在GP Vnt1裸金属服务器上(Euler2.9系统),安装NVIDIA驱动版本515.105.01,CUDA版本11.7.1。 安装NVIDIA驱动。 wget https://us.download.nvidia.com/tesla/515.105.01/NVIDIA-Linux-x86_64-515.105.01.run chmod 700 NVIDIA-Linux-x86_64-515.105.01.run yum install -y elfutils-libelf-devel ./NVIDIA-Linux-x86_64-515.105.01.run --kernel-source-path=/usr/src/kernels/4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64 默认情况下Vnt1裸金属服务器在EulerOS 2.9使用的yum源是“http://repo.huaweicloud.com”,该源可用。如果执行“yum update”时报错, 显示有软件包冲突等问题, 可通过“yum remove xxx软件包”解决该问题。 NVIDIA的驱动程序是一个二进制文件,需使用系统中的libelf库(在elfutils-libelf-devel开发包)中。它提供了一组C函数,用于读取、修改和创建ELF文件,而NVIDIA驱动程序需要使用这些函数来解析当前正在运行的内核和其他相关信息。 安装过程中的提示均选OK或YES,安装好后执行reboot重启机器,再次登录后执行命令查看GPU卡信息。 nvidia-smi -pm 1 #该命令执行时间较长,请耐心等待,作用为启用持久模式,可以优化Linux实例上GPU设备的性能 nvidia-smi 安装CUDA。 wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run chmod 700 cuda_11.7.1_515.65.01_linux.run ./cuda_11.7.1_515.65.01_linux.run --toolkit --samples --silent 安装好后执行以下命令检查安装结果: /usr/local/cuda/bin/nvcc -V PyTorch2.0安装和CUDA验证指南。 PyTorch2.0所需环境为Python3.10, 安装配置miniconda环境。 miniconda安装并创建alpha环境。 wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh chmod 750 Miniconda3-py310_23.1.0-1-Linux-x86_64.sh bash Miniconda3-py310_23.1.0-1-Linux-x86_64.sh -b -p /home/miniconda export PATH=/home/miniconda/bin:$PATH conda create --quiet --yes -n alpha python=3.10 安装pytorch2.0并验证cuda状态。 在alpha环境下安装torch2.0,使用清华PIP源完成。 source activate alpha pip install torch==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple python 验证torch与cuda的安装状态,输出为True即为正常。 import torch print(torch.cuda.is_available())
  • GP Vnt1裸金属服务器Ubuntu18.04安装NVIDIA 515+CUDA 11.7 本小节旨在指导如何在GP Vnt1裸金属服务器上(Ubuntu 18.04系统),安装NVIDIA驱动版本515、CUDA版本11.7和Docker。 NVIDIA驱动安装。 wget https://us.download.nvidia.com/tesla/515.105.01/NVIDIA-Linux-x86_64-515.105.01.run chmod +x NVIDIA-Linux-x86_64-515.105.01.run ./NVIDIA-Linux-x86_64-515.105.01.run CUDA安装。 wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run chmod +x cuda_11.7.1_515.65.01_linux.run ./cuda_11.7.1_515.65.01_linux.run --toolkit --samples –silent 安装Docker。 curl https://get.docker.com | sh && sudo systemctl --now enable docker 安装NIVDIA容器插件。 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list apt-get update apt-get install -y nvidia-container-toolkit nvidia-ctk runtime configure --runtime=docker systemctl restart docker 验证Docker模式环境是否安装成功。 基于PyTorch2.0镜像验证(本案例中镜像较大,拉取时间可能较长)。 docker run -ti --runtime=nvidia --gpus all pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel bash 图4 成功拉取镜像
  • 场景描述 本文旨在指导如何在基于GPU资源的裸金属服务器上,安装NVIDIA、CUDA驱动等环境配置。由于不同GPU预置镜像中预安装的软件不同,您通过Lite Server算力资源和镜像版本配套关系章节查看已安装的软件。下面为常见的软件安装步骤,您可针对需要安装的软件查看对应的内容: 安装NVIDIA驱动 安装CUDA驱动 安装Docker 安装nvidia-fabricmanager 以下提供常见的配置场景,您可查看相关文档方便您快速配置: GP Vnt1裸金属服务器EulerOS 2.9安装NVIDIA 515+CUDA 11.7 GP Vnt1裸金属服务器Ubuntu 18.04安装NVIDIA 470+CUDA 11.4 GP Vnt1裸金属服务器Ubuntu18.04安装NVIDIA 515+CUDA 11.7 GP Ant8裸金属服务器Ubuntu 20.04安装NVIDIA 515+CUDA 11.7
  • 注意事项 本文旨在指导如何在基于Snt9b资源的裸金属服务器上,进行磁盘合并挂载、安装docker等环境配置。在配置前请注意如下事项: 首次装机时需要配置存储、固件、驱动、网络访问等基础内容,这部分配置尽量稳定减少变化。 裸机上的开发形式建议开发者启动独立的Docker容器作为个人开发环境。Snt9b的裸机包含8卡算力资源,一般来说多人可以共用这个裸机完成开发与调测工作。多人使用为了避免冲突,建议各自在自己的docker容器中进行独立开发,并提前规划好每个人使用的具体卡号,避免相互影响。 ModelArts提供了标准化基础容器镜像,在容器镜像中已经预置了基础MindSpore或PyTorch框架和开发调测工具链,推荐用户直接使用该镜像,用户也可以使用自己的业务镜像或昇腾AscendHub提供的镜像。如果镜像中预置的软件版本不是您期望的版本,可以自行安装替换。 开发形式推荐通过容器中暴露的SSH端口以远程开发的模式(VSCode SSH Remote、 Xshell)连接到容器中进行开发,可以在容器中挂载宿主机的个人存储目录,用于存放代码和数据。 当前指导中很多操作步骤在最新发放的Snt9b裸机环境中已经预置,无需用户再手动配置,用户在操作中如发现某个步骤已有预置配置可直接跳过该步骤。
  • 使用弹性文件服务SFS作为存储 如果使用SFS服务作为存储方案,推荐使用SFS Turbo文件系统。SFS Turbo提供按需扩展的高性能文件存储,还具备高可靠和高可用的特点,支持根据业务需要弹性扩容,且性能随容量增加而提升,可广泛应用于多种业务场景。 在SFS服务控制台上创建文件系统,具体步骤请参考创建SFS Turbo文件系统。同一区域不同可用区之间文件系统与云服务器互通,因此保证SFS Turbo与Server服务器在同一区域即可。 当创建文件系统后,您需要该文件系统挂载至Server服务器上,具体步骤请参考挂载NFS协议类型文件系统到云服务器(Linux)。 为避免已挂载文件系统的云服务器重启后,挂载信息丢失,您可以在云服务器设置重启时进行自动挂载,具体步骤请参考服务器重启后自动挂载指南。
  • 使用 对象存储服务 OBS作为存储 如果使用OBS服务作为存储方案,推荐使用“并行文件系统+obsutil”的方式,并行文件系统是OBS服务提供的一种经过优化的高性能文件语义系统,提供毫秒级别访问时延,TB/s级别带宽和百万级别的IOPS。obsutil是一款用于访问管理对象存储服务(Object Storage Service,OBS)的命令行工具,您可以使用该工具对OBS进行常用的配置管理操作,如创建桶、上传文件/文件夹、下载文件/文件夹、删除文件/文件夹等。对于熟悉命令行程序的用户,obsutil能在执行批量处理、自动化任务场景能为您带来更优体验。 在OBS服务控制台上创建并行文件系统,具体步骤请参考创建并行文件系统。 针对您的操作系统,下载对应版本的obsutil至弹性Server服务器,并完成安装,具体步骤请参考下载和安装obsutil。 使用obsutil之前,您需要配置obsutil与OBS的对接信息,包括OBS终端节点地址(Endpoint)和访问密钥(AK和SK)。获得OBS的认证后,才能使用obsutil执行OBS桶和对象的相关操作,具体步骤请参考初始化配置。 配置完成后,您可以通过命令行的方式在Server服务器中对OBS的文件进行上传下载等操作,关于命令行介绍请参考命令行结构。
  • Lite Server资源配置流程 在开通Lite Server资源后,需要完成相关配置才能使用,配置流程如下图所示。 图1 Lite Server资源配置流程图 表1 Server资源配置流程 配置顺序 配置任务 场景说明 1 配置Lite Server网络 Server资源开通后,需要进行网络配置,才可使其与Internet通信。在后续配置存储和软件环境时需要Server服务器能够访问网络,因此需要先完成网络配置。 2 配置Lite Server存储 Server资源需要挂载数据盘用于存储数据文件,当前支持SFS、OBS、EVS三种 云存储 服务,提供了多种场景下的存储解决方案。 3 配置Lite Server软件环境 不同镜像中预安装的软件不同,您通过Lite Server算力资源和镜像版本配套关系章节查看已安装的软件。当Server服务器中预装的软件无法满足业务需求时,您可在Server服务器中配置所需要的软件环境。 父主题: Lite Server资源配置
  • GP Lnt002弹性云服务器支持的镜像详情 镜像名称:Ubuntu-22.04-server-64bit-with-Tesla-Driver-535.183.01-and-CUDA-12.2(仅限北京四、上海一、利雅得、雅加达) 软件类型 版本详情 操作系统 Ubuntu 20.04 server 64bit 架构类型 x86 内核 5.15.0-92-generic nvidia 535.183.01 cuda 12.2 docker 27.3.1 nvidia-container-toolkit 1.17.1
  • GP Ant8裸金属服务器支持的镜像详情 镜像名称:Ubuntu-20.04-for-Ant8-with-RoCE-and-NVIDIA-535-CUDA-12.2(乌兰察布一、北京四、乌兰察布-汽车一) 表6 镜像详情 软件类型 版本详情 操作系统 Ubuntu 20.04 server 64bit 内核版本 5.4.0-193-generic 架构类型 x86 驱动版本 535.183.06 cuda 12.2 container-toolkit 1.16.2-1 fabricmanager 535.183.06-1 mlnx-ofed-linux 5.8-OFED.5.8.2.0.3.1.kver.5.4.0-193-generic peer-memory-dkms 1.2-0 libnccl2 2.18.1 nccl-test v.2.13.6 docker 20.10.23 RoCE路由配置 支持
  • GP Vnt1裸金属服务器支持的镜像详情 Vnt1规格在北京四、北京一和上海一虽然规格相同,但是产品的配置、发布时间都存在很大差异,因此镜像不能共用。 镜像名称:Ubuntu-22.04-for-BareMetal-Vnt1-p3-with-NVIDIA-535-CUDA-12.2(仅限于北京一、北京四、广州) 表7 镜像详情 软件类型 版本详情 操作系统 Ubuntu 22.04 server 64bit 内核版本 5.15.0-25-generic 架构类型 x86 驱动版本 535.54.03 cuda 12.2 container-toolkit 1.17.0-1 docker 24.0.2 镜像名称:Ubuntu-18.04-for-BareMetal-Vnt1-p6-with-NVIDIA-470-CUDA-11.4-Uniagent(仅限于上海一) 表8 镜像详情 软件类型 版本详情 操作系统 Ubuntu 18.04 server 64bit 内核版本 4.15.0-45-generic 架构类型 x86 驱动版本 470.182.03 cuda 11.4 container-toolkit 1.15.0.-1 mlnx-ofed-linux 5.7-1.0.2.1-ubuntu18.04-x86_64 libnccl2 2.10.3-1 nccl-test v2.13.9 docker 24.0.2
  • NPU Snt9B裸金属服务器支持的镜像详情 镜像名称:EulerOS2.10-Arm-64bit-for-Snt9B-BareMetal-with-23.0.6-7.1.0.9.220-CANN7.0.1.5 表2 镜像详情 软件类型 版本详情 操作系统 EulerOS 2.10 内核版本 Linux 4.19.90-vhulk2211.3.0.h1543.eulerosv2r10.aarch64 架构类型 aarch64 固件版本 7.1.0.9.220 npu-driver 23.0.6 Ascend-cann-toolkit 7.0.1.5 cann-kernels 7.0.1.5 Ascend-mindx-toolbox 5.0.1.1 Docker 24.0.7 Ascend-docker-runtime 5.0.1.1 MindSpore Lite 2.1.0-cp37-cp37m Mpich 3.2.1 镜像名称:HCE2.0-Arm-64bit-for-Snt9A2-E CS -BareMetal-with-24.1.0-7.5.0.3.220-CANN7.6.0.1.220 表3 镜像详情 软件类型 版本详情 操作系统 HCE2.0 内核版本 Linux 5.10.0-136.12.0.86.r1562_92.hce2.aarch64 架构类型 aarch64 固件版本 7.5.0.3.220 npu-driver 24.1.0 Ascend-cann-toolkit 7.6.0.1.220 cann-kernels 7.6.0.1.220 Ascend-mindx-toolbox 6.0.0 Docker 18.09 Ascend-docker-runtime 6.0.0 Mpich 4.1.3 镜像名称:HCE2.0-Arm-64bit-for-Snt9B-BareMetal-with-23.0.6-7.1.0.9.220-CANN7.1.0.5 表4 镜像详情 软件类型 版本详情 操作系统 HCE2.0 内核版本 Linux 5.10.0-60.18.0.50.r865_35.hce2.aarch64 架构类型 aarch64 固件版本 7.1.0.9.220 npu-driver 23.0.6 Ascend-cann-toolkit 7.0.1.5 cann-kernels 7.0.1.5 Ascend-mindx-toolbox 5.0.1.1 Docker 18.09 Ascend-docker-runtime 5.0.1.1 MindSpore Lite 2.1.0-cp37-cp37m Mpich 4.1.3 镜像名称:Ubuntu22.04-Arm-64bit-for-Snt9B-BareMetal-with-23.0.6-7.1.0.9.220-CANN-7.1.0.5 表5 镜像详情 软件类型 版本详情 操作系统 Ubuntu22.04 内核版本 5.15.0-91-generic 架构类型 aarch64 固件版本 7.1.0.9.220 npu-driver 23.0.6 Ascend-cann-toolkit 7.0.1.5 cann-kernels 7.0.1.5 Ascend-mindx-toolbox 5.0.1.1 Docker 26.0.0 Ascend-docker-runtime 5.0.0.2 MindSpore Lite 2.1.0-cp37-cp37m Mpich 4.1.3
  • Lite Server高危操作一览表 ModelArts Lite Server在日常操作与维护过程中涉及的高危操作,需要严格按照操作指导进行,否则可能会影响业务的正常运行。 高危操作风险等级说明: 高:对于可能直接导致业务失败、数据丢失、系统不能维护、系统资源耗尽的高危操作。 中:对于可能导致安全风险及可靠性降低的高危操作。 低:高、中风险等级外的其他高危操作。 表1 高危操作一览表 操作对象 操作名称 风险描述 风险等级 应对措施 操作系统 升级/修改操作系统内核或者驱动。 如果升级/修改操作系统内核或者驱动,很可能导致驱动和内核版本不兼容,从而导致OS无法启动,或者基本功能不可用。相关高危命令如:apt-get upgrade(升级系统中全部软件,包括内核)。 查看当前内核命令:uname -a 高 如果需要升级/修改,请联系华为云技术支持。 切换或者重置操作系统。 服务器在进行过“切换或者重置操作系统”操作后,EVS系统盘ID发生变化,和下单时订单中的EVS ID已经不一致, 因此EVS系统盘将不支持扩容,并显示信息:“当前订单已到期,无法进行扩容操作,请续订”。 中 切换或者重置操作系统后,建议通过挂载数据盘EVS或挂载SFS盘等方式进行存储扩容。 父主题: Lite Server使用前必读
  • Lite Server使用流程 ModelArts Lite Server提供多样化的资源,赋予用户以root账号自主安装和部署AI框架、应用程序等第三方软件的能力,为用户打造专属的云上服务器环境。用户只需轻松选择服务器的规格、镜像、网络配置及密钥等基本信息,即可迅速创建Server服务器,获取所需的云上物理资源,充分满足算法工程师在日常训练和推理工作中的需求。 本文旨在帮助您了解Lite Server的基本使用流程,帮助您快速上手,使用流程包含以下步骤。 图1 使用流程 资源开通 Server资源需要先购买才能使用。 首先请联系客户经理确认Server资源方案,部分规格为受限规格,因此需要申请开通您所需的资源规格。 Server所需资源可能会超出云服务默认提供的资源配额(如ECS、EIP、SFS),因此需要提交工单提升资源配额。 为子用户账号开通Server功能所需的基础权限。 由于ModelArts服务在使用过程中会访问其他依赖服务,因此需要给ModelArts进行委托授权。 在ModelArts控制台购买Server资源。 资源配置 完成资源购买后,需要对网络、存储、软件环境进行相关配置。 资源使用 完成资源配置后,您可以登录到服务器进行训练和推理,具体案例可参考Lite Server资源使用。 资源管理 Lite Server提供启动、停止、切换操作系统等管理手段,您可在ModelArts控制台上对资源进行管理。 表1 相关名词解释 名词 含义 裸金属服务器 裸金属服务器是一款兼具虚拟机弹性和物理机性能的计算类服务,为您和您的企业提供专属的云上物理服务器,为核心数据库、关键应用系统、高性能计算、大数据等业务提供卓越的计算性能以及数据安全。 由于Server是一台裸金属服务器,在ModelArts管理控制台购买Server后,会在BMS管理控制台上创建一台与Server对应的裸金属服务器,后续挂载磁盘、绑定弹性网络IP等操作可在BMS服务控制台上完成。 更多裸金属服务器的介绍请见裸金属服务器BMS。 xPU xPU泛指GPU和NPU。 GPU,即图形处理器,主要用于加速深度学习模型的训练和推理。 NPU,即神经网络处理器,是专门为加速神经网络计算而设计的硬件。与GPU相比,NPU在神经网络计算方面具有更高的效率和更低的功耗。 密钥对 弹性裸金属支持SSH密钥对的方式进行登录,用户无需输入密码就可以登录到弹性裸金属服务器,因此可以防止由于密码被拦截、破解造成的账户密码泄露,从而提高弹性裸金属服务器的安全性。 说明: 为保证云服务器安全,未进行私钥托管的私钥只能下载一次,请妥善保管。 虚拟私有云 虚拟私有云(Virtual Private Cloud,VPC)为裸金属服务器构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云中资源的安全性,简化用户的网络部署。您可以在VPC中定义安全组、VPN、IP地址段、带宽等网络特性。用户可以通过VPC方便地管理、配置内部网络,进行安全、快捷的网络变更。同时,用户可以自定义安全组内与组间的访问规则,加强裸金属服务器的安全保护。 更多VPC介绍请见 虚拟私有云VPC 。 父主题: Lite Server使用前必读
  • 约束与限制 OMS 迁移任务限制如表1所示。 表1 OMS迁移任务限制 类别 限制 多版本对象迁移 OMS默认只迁移源端多版本对象中的最新版本,不支持迁移历史版本的对象存储数据。 目的端桶存储类别 目的端桶的存储类别为:标准存储、低频访问存储、归档存储和深度归档存储。 迁移网络 支持公网迁移,内网迁移。不支持专线迁移。 元数据迁移 仅支持中文字符、英文字符、数字和中划线【-】迁移。除上述字符外,其他所有字符均不支持。 中文字符:迁移过程中,会被转换成URL编码形式。 注意: 不支持中文标点符号迁移,由于中文标点符号不会被转换成URL编码,因此元数据中包含中文标点符号时,将无法迁移成功。 英文字符、数字与中划线【-】:迁移过程中不需要进行编码转换,可以直接迁移。 迁移范围 目前单个任务(迁移任务/迁移任务组)仅支持迁移单桶数据,如果涉及多桶数据迁移,需要创建多个任务。 软链接 暂不支持源端软链接文件的迁移。在迁移过程中,软链接文件均会添加到失败列表中并造成迁移任务最终失败,但其中非软链接文件可正常迁移到目的端。如果源端包含软链接,请进行如下处理: 填写实际的文件路径。 对象ACL迁移 OMS暂不支持对象ACL迁移。 迁移速度 通常OMS的迁移速度参考值是10~20 TB每天。若需更高的迁移效率,建议使用迁移中心MgC的存储迁移工作流进行迁移。迁移中心MgC提供独享的集群资源,能够动态扩展迁移性能,最高支持20Gbit/s带宽。 迁移速度受源端对象个数、大小,带宽以及公网传输距离影响,建议用户创建一个含有实际数据的迁移任务来测试迁移速度,实际最大迁移速度为单个任务平均速度的5倍(单个Region内并发任务数最大为5)。如果需要更高的并发任务数,可以使用迁移中心 MgC的存储迁移工作流来自定义并发子任务数。 归档数据 对于归档类型的数据,迁移前需要您进行解冻操作,待解冻完成后再创建迁移任务,解冻时请注意如下事项: 请务必在解冻完成后再创建迁移任务。 请根据待迁移的数据总量评估并设置解冻有效期,以防迁移期间数据再次变成归档状态。 解冻操作可能会产生一定的费用,由源端云厂商收取,计费规则请咨询源端云厂商。 迁移任务 同一用户,单个Region内并发任务数最大为5。 说明: 假设分别迁移对象存储数据到华北-北京一和华南-广州时,总并发数为5*2=10个。 24小时内,单个Region内最多创建迁移任务数为1000000个。 迁移任务组 同一用户,单个Region内并发任务组数最大为5。 说明: 假设分别迁移对象存储数据到华北-北京一和华南-广州时,总并发数为5*2=10个。 同步任务 同步任务和迁移任务、迁移任务组共用配额,优先于迁移任务、迁移任务组下发。 并发执行同步中的任务数量最多为5个。 对象列表文件 对象列表文件大小不能超过1024MB。 对象列表文件必须是“.txt”类型的文件,并且该文件元数据中的“ContentType”只能为:“text/plain”。 对象列表文件必须是UTF-8无BOM格式编码格式。 对象列表文件中每行只能包含一个对象名称,并且对象名称使用URL Encode编码。 对象列表文件中每行不要添加无效空格,否则会将空格作为对象名,导致迁移失败。 对象列表文件中每行长度不要超过65535,否则会导致迁移失败。 对象列表文件的元数据中不能设置“ContentEncoding”,否则会导致迁移失败。 URL列表文件 URL列表文件大小不能超过1024MB。 URL列表文件必须是“.txt”类型的文件,并且该文件元数据中的“ContentType”只能为:“text/plain”。 URL列表文件必须是UTF-8无BOM格式编码格式。 URL列表文件中每行只能包含一个URL和目的端对象名称。 URL列表文件中每行长度不要超过65535,否则会导致迁移失败。 URL列表文件的元数据中不能设置“ContentEncoding”,否则会导致迁移失败。 URL列表文件中每行不要添加无效空格,否则会将空格作为对象名,导致迁移失败。 URL列表文件中每行使用制表符\t分隔URL和目的端对象名称,格式为:[URL][制表符][目的端对象名称],其中源端对象名称如果包含中文、特殊字符必须使用URL Encode对URL编码;目的端对象名称如果包含中文、特殊字符也需要使用URL Encode编码。例如: http://xxx.xxx.xxx.xxx.com/doc/%e6%96%87%e4%bb%b61.txt doc/%e6%96%87%e4%bb%b61.txt http://xxx.xxx.xxx.xxx.com/doc/thefile2.txt doc/thefile2.txt http://xxx.xxx.xxx.xxx.com/the%20file.txt the%20file.txt http://xxx.xxx.xxx.xxx.com/the%20file2.txt the+file2.txt http://xxx.xxx.xxx.xxx.com/doc/thefile.txt doc/thefile.txt 注意: URL编码仅从 域名 后第二个字符开始,不要将协议头、域名以及域名两侧的斜线转码,否则将导致格式校验错误。 URL与目的端对象名称之间使用一个制表符(键盘上Tab键)进行分隔,请勿使用空格。 以上示例中,URL所表示的文件,被复制到目的端桶后,对象会被分别命名为:doc/文件1.txt、doc/thefile2.txt、the file.txt、the file2.txt以及doc/thefile.txt。 URL列表文件中的URL需确保可通过HEAD和GET请求正常访问。 失败对象列表文件 单个任务失败对象列表最多记录10万个失败对象。 说明: 失败对象超过10万个的场景,建议基于已有失败对象列表,分析处理后重新迁移。
  • 适用场景 适用于单个桶数据量大于3 TB或对象个数大于500万的对象迁移场景,迁移任务组将源端待迁移对象智能分解到多个迁移任务中并行迁移。 OMS默认会将等待超过30天未调度的任务自动设置为失败,并且会自动清除该任务的AK/SK。为防止大量任务阻塞在等待中,请控制创建任务的频率。 如果单个对象大小超过500G,建议您通过提交工单的方式,开通并发分片白名单配置,提升迁移速率。 在迁移过程中,系统将自动在目的端桶创建一个名为“OMS”的临时文件夹。严禁手动操作此文件夹,包括但不限于修改、删除或添加内容。对该文件夹进行的任何手动操作都可能导致迁移流程中断或失败。
  • 前提条件 已 注册华为账号 并开通华为云,完成实名认证。 已获取源端和目的端账号的AK/SK。 源端桶对应账户需要的权限包括:列举桶,获取桶位置,列举对象,获取对象元数据,获取对象内容。获取方式参见源端桶权限获取。 目的端桶需要的权限包括:列举桶,获取桶位置,列举对象,获取对象元数据,获取对象内容,上传对象,列举已上传段,取回归档存储对象。获取方式参见目的端桶权限获取。 已在华为云OBS服务中创建桶。 24小时内,单个Region内创建迁移任务组数量未满300个。 您过去24小时内已创建的迁移任务未满1000000个。 您名下处于“等待中”状态的迁移任务未满1000000个。
  • 背景信息 对象存储迁移 服务支持迁移以下的源端云服务商或数据源类型: 华为云 亚马逊云(中国) 阿里云 微软云 腾讯云 谷歌云 七牛云 青云 百度云 金山云 优刻得 HTTP/HTTPS数据源 本节以华为云为源端数据源为例进行介绍,其余云服务商创建迁移任务组的详细步骤,您可以参考各云服务商迁移教程。 迁移过程中,对象存储迁移服务会调用源端云服务提供商的对象存储服务接口,所产生的费用都遵从源端云服务提供商的计费规则并由其向您收取。
  • 前提条件 已注册华为账号并开通华为云,完成实名认证。 已获取源端和目的端账号的AK/SK。 源端桶对应账户需要的权限包括:列举桶,获取桶位置,列举对象,获取对象元数据,获取对象内容。获取方式参见源端桶权限获取。 目的端桶需要的权限包括:列举桶,获取桶位置,列举对象,获取对象元数据,获取对象内容,上传对象,列举已上传段,取回归档存储对象。获取方式参见目的端桶权限获取。 已在OBS服务中创建桶。 您过去24小时内已创建的迁移任务未满1000000个。 您名下处于“等待中”状态的迁移任务未满1000000个。
  • 适用场景 适用于单个桶数据量不超过3 TB或对象个数不超过500万的对象存储迁移场景,通过创建对象存储迁移任务,可将对象数据进行快速迁移。 如果单个桶数据量大于3 TB或对象个数大于500万,建议您创建迁移任务组来进行迁移。若需更高的迁移效率,建议使用迁移中心MgC的存储迁移工作流进行迁移。迁移中心MgC提供独享的集群资源,能够动态扩展迁移性能,最高支持20Gbit/s带宽。 OMS默认会将等待超过30天未调度的任务自动设置为失败,并且会自动清除该任务的AK/SK。为防止大量任务阻塞在等待中,请控制创建任务的频率。 如果单个对象大小超过500G,建议您通过提交工单的方式,开通并发分片白名单配置,提升迁移速率。 在迁移过程中,系统将自动在目的端桶创建一个名为“OMS”的临时文件夹。严禁手动操作此文件夹,包括但不限于修改、删除或添加内容。对该文件夹进行的任何手动操作都可能导致迁移流程中断或失败。
  • 约束与限制 OMS迁移任务限制参见下表。 表1 OMS迁移任务限制 类别 限制 多版本对象迁移 OMS默认只迁移源端多版本对象中的最新版本,不支持迁移历史版本的对象存储数据。 目的端桶存储类别 目的端桶的存储类别为:标准存储、低频访问存储、归档存储和深度归档存储。 迁移网络 支持公网迁移,内网迁移。不支持专线迁移。 元数据迁移 仅支持中文字符、英文字符、数字和中划线【-】迁移。除上述字符外,其他所有字符均不支持。 中文字符:迁移过程中,会被转换成URL编码形式。 注意: 不支持中文标点符号迁移,由于中文标点符号不会被转换成URL编码,因此元数据中包含中文标点符号时,将无法迁移成功。 英文字符、数字与中划线【-】:迁移过程中不需要进行编码转换,可以直接迁移。 迁移范围 目前单个任务(迁移任务/迁移任务组)仅支持迁移单桶数据,如果涉及多桶数据迁移,需要创建多个任务。 软链接 暂不支持源端软链接文件的迁移。在迁移过程中,软链接文件均会添加到失败列表中并造成迁移任务最终失败,但其中非软链接文件可正常迁移到目的端。如果源端包含软链接,请进行如下处理: 填写实际的文件路径。 对象ACL迁移 OMS暂不支持对象ACL迁移。 迁移速度 通常OMS的迁移速度参考值是10~20 TB每天。若需更高的迁移效率,建议使用迁移中心MgC的存储迁移工作流进行迁移。迁移中心MgC提供独享的集群资源,能够动态扩展迁移性能,最高支持20Gbit/s带宽。 迁移速度受源端对象个数、大小,带宽以及公网传输距离影响,建议用户创建一个含有实际数据的迁移任务来测试迁移速度,实际最大迁移速度为单个任务平均速度的5倍(单个Region内并发任务数最大为5)。如果需要更高的并发任务数,可以使用迁移中心 MgC的存储迁移工作流来自定义并发子任务数。 归档数据 对于归档类型的数据,迁移前需要您进行解冻操作,待解冻完成后再创建迁移任务,解冻时请注意如下事项: 请务必在解冻完成后再创建迁移任务。 请根据待迁移的数据总量评估并设置解冻有效期,以防迁移期间数据再次变成归档状态。 解冻操作可能会产生一定的费用,由源端云厂商收取,计费规则请咨询源端云厂商。 迁移任务 同一用户,单个Region内并发任务数最大为5。 说明: 假设分别迁移对象存储数据到华北-北京一和华南-广州时,总并发数为5*2=10个。 24小时内,单个Region内最多创建迁移任务数为1000000个。 迁移任务组 同一用户,单个Region内并发任务组数最大为5。 说明: 假设分别迁移对象存储数据到华北-北京一和华南-广州时,总并发数为5*2=10个。 同步任务 同步任务和迁移任务、迁移任务组共用配额,优先于迁移任务、迁移任务组下发。 并发执行同步中的任务数量最多为5个。 对象列表文件 对象列表文件大小不能超过1024MB。 对象列表文件必须是“.txt”类型的文件,并且该文件元数据中的“ContentType”只能为:“text/plain”。 对象列表文件必须是UTF-8无BOM格式编码格式。 对象列表文件中每行只能包含一个对象名称,并且对象名称使用URL Encode编码。 对象列表文件中每行不要添加无效空格,否则会将空格作为对象名,导致迁移失败。 对象列表文件中每行长度不要超过65535,否则会导致迁移失败。 对象列表文件的元数据中不能设置“ContentEncoding”,否则会导致迁移失败。 URL列表文件 URL列表文件大小不能超过1024MB。 URL列表文件必须是“.txt”类型的文件,并且该文件元数据中的“ContentType”只能为:“text/plain”。 URL列表文件必须是UTF-8无BOM格式编码格式。 URL列表文件中每行只能包含一个URL和目的端对象名称。 URL列表文件中每行长度不要超过65535,否则会导致迁移失败。 URL列表文件的元数据中不能设置“ContentEncoding”,否则会导致迁移失败。 URL列表文件中每行不要添加无效空格,否则会将空格作为对象名,导致迁移失败。 URL列表文件中每行使用制表符\t分隔URL和目的端对象名称,格式为:[URL][制表符][目的端对象名称],其中源端对象名称如果包含中文、特殊字符必须使用URL Encode对URL编码;目的端对象名称如果包含中文、特殊字符也需要使用URL Encode编码。例如: http://xxx.xxx.xxx.xxx.com/doc/%e6%96%87%e4%bb%b61.txt doc/%e6%96%87%e4%bb%b61.txt http://xxx.xxx.xxx.xxx.com/doc/thefile2.txt doc/thefile2.txt http://xxx.xxx.xxx.xxx.com/the%20file.txt the%20file.txt http://xxx.xxx.xxx.xxx.com/the%20file2.txt the+file2.txt http://xxx.xxx.xxx.xxx.com/doc/thefile.txt doc/thefile.txt 注意: URL编码仅从域名后第二个字符开始,不要将协议头、域名以及域名两侧的斜线转码,否则将导致格式校验错误。 URL与目的端对象名称之间使用一个制表符(键盘上Tab键)进行分隔,请勿使用空格。 以上示例中,URL所表示的文件,被复制到目的端桶后,对象会被分别命名为:doc/文件1.txt、doc/thefile2.txt、the file.txt、the file2.txt以及doc/thefile.txt。 URL列表文件中的URL需确保可通过HEAD和GET请求正常访问。 失败对象列表文件 单个任务失败对象列表最多记录10万个失败对象。 说明: 失败对象超过10万个的场景,建议基于已有失败对象列表,分析处理后重新迁移。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全