昇腾社区首页
中文
注册

迁移前准备

Deepspeed_npu是昇腾基于Microsoft DeepSpeed的适配插件,用户可使用该插件,配合原生DeepSpeed,在NPU上使用其分布式特性。当前Deepspeed_npu已适配其流水并行、ZeRO、重计算、MoE等主要特性。使用DeepSpeed训练的大模型,如LLaMA、LLaMA-2、Baichuan等。

  1. 单击Link下载LLaMA-Factory代码仓压缩包并上传至服务器任意目录并解压,例如“/home”。
    ├──home
        ├──LLaMA-Factory
            ├── assets
            ├── data    // 预训练所需数据集所在目录
            ├── ...
            ├── src
                ├── llmtuner
                   ├── api
                   ├── ...
                   ├── extras
                      ├── misc.py
                      └── ...
                   └── ...
                └── train_bash.py
            ├── Makefile
            ├── model_weight       // 自定义目录,存放模型配置文件和权重文件
            └── setup.py
  2. 准备预训练权重文件。
    用户单击Link自行获取模型配置文件和权重文件,并放于LLaMA-Factory代码仓的自定义目录下,如model_weight,目录结构如下:
    ├──model_weight
        ├── config.json
        ├── configuration_baichuan.py
        ├── generation_config.json
        ├── modeling_baichuan_origin.py
        ├── modeling_baichuan.py
        ├── pytorch_model-00001-of-00003.bin
        ├── pytorch_model-00002-of-00003.bin
        ├── pytorch_model-00003-of-00003.bin
        ├── pytorch_model.bin.index.json
        ├── quantizer.py
        ├── requirements.txt
        ├── special_tokens_map.json
        ├── tokenization_baichuan.py
        ├── tokenizer_config.json
        └── tokenizer.model
  3. 当前模型支持的 PyTorch 版本和已知三方库依赖如下表所示。
    表1 支持的配套版本

    软件

    版本

    PyTorch

    2.0

    transformers

    4.31.0

    accelerate

    0.21.0

    python

    ≥3.8.0

  4. 执行如下命令安装依赖。
    pip install -r requirements.txt
  5. 安装deepspeed模型套件。
    • 此章节示例的模型为Atlas 训练系列产品上进行迁移的模型,如5所示命令,需要安装原生deepspeed和deepspeed_npu插件。
    • Atlas A2 训练系列产品上进行迁移的模型,deepspeed已原生支持昇腾NPU,仅需按照如下命令安装最新版deepspeed即可:
      pip3 install deepspeed
    安装原生deepspeed,执行如下命令:
    pip3 install deepspeed==0.9.2 
    安装deepspeed_npu插件,执行如下命令:
    git clone https://gitee.com/ascend/DeepSpeed.git
    cd DeepSpeed
    pip3 install .
  6. 检测python包并安装对应版本。
    pip install trl==0.7.2
    pip install transformers==4.31.0
    pip install transformers_stream_generator decorator absl-py cloudpickle synr==0.5.0 tornado
  7. 修改deepspeed版本检测。
    • 注释 ${conda环境路径}/lib/python3.8/site-packages/transformers/deepspeed.py 的deepspeed版本检测代码,如下所示:
      def __init__(self, config_file_or_dict):
              # set global weakref object
              set_hf_deepspeed_config(self)
              dep_version_check("accelerate")
              dep_version_check("deepspeed")
              super().__init__(config_file_or_dict)
      ...
    • 将 ${conda环境路径}/lib/python3.8/site-packages/accelerate/accelerator.py 修改为if compare_versions("deepspeed", "<", "0.9.2"),如下所示:
      ...
      if deepspeed_plugin is None:  # init from env variables
                  deepspeed_plugin = (
                      DeepSpeedPlugin() if os.environ.get("ACCELERATE_USE_DEEPSPEED", "false") == "true" else None
                  )
              else:
                  assert isinstance(
                      deepspeed_plugin, DeepSpeedPlugin
                  ), "`deepspeed_plugin` must be an `accelerate.utils.DeepSpeedPlugin` object."
                  os.environ["ACCELERATE_USE_DEEPSPEED"] = "true"  # use DeepSpeed if plugin is provided
              if deepspeed_plugin:
                  if not is_deepspeed_available():
                      raise ImportError("DeepSpeed is not installed => run `pip install deepspeed` or build it from source.")
                  if compare_versions("deepspeed", "<", "0.9.3"):
                      raise ImportError("DeepSpeed version must be >= 0.9.3. Please update DeepSpeed.")