すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:Lingjun 上での Qwen のフルマネージド

最終更新日:Mar 06, 2026

このガイドでは、大規模言語モデル (LLM) 開発者が Lingjun インテリジェントコンピューティングプラットフォームを使い始めるための手順を説明します。Qwen-7B、Qwen-14B、Qwen-72B などの Qwen LLM の完全な開発ワークフローを学びます。このワークフローには、効率的な分散トレーニング、3 段階の命令チューニング、オフラインモデル推論、オンラインサービスデプロイが含まれます。このトピックでは、Qwen-7B モデルを使用してプロセスを説明します。

前提条件

このガイドでは、Qwen-7B v1.1.4 モデルを例として使用します。開始する前に、次の準備を完了してください。

  • Platform for AI (PAI) (Data Science Workshop (DSW)、Deep Learning Containers (DLC)、Elastic Algorithm Service (EAS) を含む) を有効化し、デフォルトのワークスペースを作成します。詳細については、「PAI の有効化とデフォルトワークスペースの作成」をご参照ください。

  • Lingjun リソースを購入し、リソースクォータを作成します。次の表に、さまざまなモデルサイズでサポートされているリソース仕様を示します。使用するモデルサイズに基づいて適切なリソースを選択してください。Lingjun リソースのノード仕様の詳細については、「Lingjun Serverless の料金詳細」をご参照ください。リソースの購入とクォータの作成方法の詳細については、「リソースグループの作成と Lingjun リソースの購入」および「リソースクォータの作成」をご参照ください。

    モデルサイズ

    フルパラメーター トレーニングリソース

    推論リソース (最小)

    Megatron トレーニングモデルセグメント

    7B

    8 × gu7xf GPU、8 × gu7ef GPU

    1 × V100 (32 GB VRAM)、1 × A10 (24 GB VRAM)

    TP: 1, PP: 1

    14B

    8 × gu7xf GPU、8 × gu7ef GPU

    2 × V100 (32 GB VRAM)、2 × A10 (24 GB VRAM)

    TP: 2, PP: 1

    72B

    4 × 8 gu7xf GPU、4 × 8 gu7ef GPU

    6 × V100 (32 GB VRAM)、2 × gu7xf GPU

    TP: 8, PP: 2

  • トレーニングファイルと結果を保存するために、汎用 NAS ファイルシステムデータセットを作成します。デフォルトのマウントパスを /mnt/data/nas に設定します。詳細については、「データセットの作成と管理」をご参照ください。

  • 次の主要なパラメーター設定で DSW インスタンスが作成されていること。詳細については、「DSW インスタンスの作成」をご参照ください。

    • Resource Quota:Lingjun リソース用に作成したリソースクォータを選択します。

    • Instance Type:次のリソース仕様を設定します。

      • vCPUs: 90。

      • Memory (GiB):1024。

      • Shared Memory (GiB):1024。

      • GPUs:8 以上。

    • Dataset Mounting: Custom Dataset をクリックし、作成したデータセットを選択して、デフォルトのマウントパスを使用します。

    • Image ConfigurationImage Address タブで、ランタイムイメージを以下に設定します:pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm

  • Resource Access Management (RAM) ユーザーを使用してこれらの操作を実行する場合、RAM ユーザーに DSW、DLC、または EAS に必要な権限を付与します。詳細については、「クラウドプロダクトの依存関係と権限:DSW」、「クラウドプロダクトの依存関係と権限:DLC」、または「クラウドプロダクトの依存関係と権限:EAS」をご参照ください。

制限事項

このベストプラクティスは、中国 (ウランチャブ) リージョンでのみ利用可能です。

ステップ 1: Qwen モデルの準備

このトピックでは、モデルをダウンロードする 3 つの方法を提供します。次の手順に従います。

  1. PAI DSW 開発環境に移動します。

    1. PAI コンソールにログインします。

    2. ページ左上で、サービスを使用するリージョンとして中国 (ウランチャブ) を選択します。

    3. 左側のナビゲーションウィンドウで、Workspaces をクリックします。表示されたページで、管理するワークスペースの名前をクリックします。

    4. 左側のナビゲーションウィンドウで、Model Training > Data Science Workshop (DSW) を選択します。

    5. 対象のインスタンスのActions 列で、Open をクリックします。

  2. 上部のメニューバーで、[ターミナル] をクリックします。表示されたタブで、create a terminal をクリックします。

  3. Qwen モデルをダウンロードします。

    ModelScope コミュニティからモデルをダウンロード

    1. ターミナルで、次のコマンドを実行して ModelScope をインストールします。

    2. pip install modelscope

      クリックして出力を表示します。結果の WARNING メッセージは無視してかまいません。

      Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
      Collecting modelscope
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/ac/05/75b5d750608d7354dc3dd023dca7101e5f3b4645cb3e5b816536d472a058/modelscope-1.9.5-py3-none-any.whl (5.4 MB)
           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.4/5.4 MB 104.7 MB/s eta 0:00:00
      Requirement already satisfied: pyyaml in /opt/*/lib/python3.8/site-packages (from modelscope) (5.4.1)
      Requirement already satisfied: pandas in /opt/*/lib/python3.8/site-packages (from modelscope) (1.5.3)
      Requirement already satisfied: addict in /opt/*/lib/python3.8/site-packages (from modelscope) (2.4.0)
      Requirement already satisfied: numpy in /opt/*/lib/python3.8/site-packages (from modelscope) (1.22.2)
      Collecting simplejson>=3.3.0
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/33/5f/b9506e323ea89737b34c97a6eda9d22ad6b771190df93f6eb72657a3b996/simplejson-3.19.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (136 kB)
           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 136.6/136.6 kB 70.2 MB/s eta 0:00:00
      Collecting gast>=0.2.2
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/fa/39/5aae571e5a5f4de9c3445dae08a530498e5c53b0e74410eeeb0991c79047/gast-0.5.4-py3-none-any.whl (19 kB)
      Requirement already satisfied: Pillow>=6.2.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (9.3.0)
      Requirement already satisfied: oss2 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.17.0)
      Requirement already satisfied: filelock>=3.3.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (3.11.0)
      Requirement already satisfied: urllib3>=1.26 in /opt/*/lib/python3.8/site-packages (from modelscope) (1.26.12)
      Requirement already satisfied: datasets<=2.13.0,>=2.8.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.11.0)
      Requirement already satisfied: attrs in /opt/*/lib/python3.8/site-packages (from modelscope) (22.2.0)
      Requirement already satisfied: scipy in /opt/*/lib/python3.8/site-packages (from modelscope) (1.9.3)
      Requirement already satisfied: yapf in /opt/*/lib/python3.8/site-packages (from modelscope) (0.32.0)
      Requirement already satisfied: pyarrow!=9.0.0,>=6.0.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (11.0.0)
      Requirement already satisfied: setuptools in /opt/*/lib/python3.8/site-packages (from modelscope) (65.5.0)
      Requirement already satisfied: requests>=2.25 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.28.1)
      Requirement already satisfied: einops in /opt/*/lib/python3.8/site-packages (from modelscope) (0.6.0)
      Requirement already satisfied: python-dateutil>=2.1 in /opt/*/lib/python3.8/site-packages (from modelscope) (2.8.2)
      Collecting sortedcontainers>=1.5.9
        Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
      Requirement already satisfied: tqdm>=4.64.0 in /opt/*/lib/python3.8/site-packages (from modelscope) (4.65.0)
      Requirement already satisfied: dill<0.3.7,>=0.3.0 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.3.6)
      Requirement already satisfied: multiprocess in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.70.14)
      Requirement already satisfied: aiohttp in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (3.8.4)
      Requirement already satisfied: responses<0.19 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.18.0)
      Requirement already satisfied: huggingface-hub<1.0.0,>=0.11.0 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (0.16.4)
      Requirement already satisfied: fsspec[http]>=2021.11.1 in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (2023.4.0)
      Requirement already satisfied: packaging in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (21.3)
      Requirement already satisfied: xxhash in /opt/*/lib/python3.8/site-packages (from datasets<=2.13.0,>=2.8.0->modelscope) (3.2.0)
      Requirement already satisfied: six>=1.5 in /opt/*/lib/python3.8/site-packages (from python-dateutil>=2.1->modelscope) (1.16.0)
      Requirement already satisfied: certifi>=2017.4.17 in /opt/*/lib/python3.8/site-packages (from requests>=2.25->modelscope) (2022.9.24)
      Requirement already satisfied: charset-normalizer<3,>=2 in /opt/*/lib/python3.8/site-packages (from requests>=2.25->modelscope) (2.0.4)
      Requirement already satisfied: idna<4,>=2.5 in /opt/*/lib/python3.8/site-packages (from requests>=2.25->modelscope) (3.4)
      Requirement already satisfied: aliyun-python-sdk-kms>=2.4.1 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (2.16.0)
      Requirement already satisfied: aliyun-python-sdk-core>=2.13.12 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (2.13.36)
      Requirement already satisfied: crcmod>=1.7 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (1.7)
      Requirement already satisfied: pycryptodome>=3.4.7 in /opt/*/lib/python3.8/site-packages (from oss2->modelscope) (3.15.0)
      Requirement already satisfied: pytz>=2020.1 in /opt/*/lib/python3.8/site-packages (from pandas->modelscope) (2022.7.1)
      Requirement already satisfied: cryptography>=2.6.0 in /opt/*/lib/python3.8/site-packages (from aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (38.0.3)
      Requirement already satisfied: jmespath<1.0.0,>=0.9.3 in /opt/*/lib/python3.8/site-packages (from aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (0.10.0)
      Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (4.0.2)
      Requirement already satisfied: yarl<2.0,>=1.0 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (1.8.2)
      Requirement already satisfied: frozenlist>=1.1.1 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (1.3.3)
      Requirement already satisfied: multidict<7.0,>=4.5 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (6.0.4)
      Requirement already satisfied: aiosignal>=1.1.2 in /opt/*/lib/python3.8/site-packages (from aiohttp->datasets<=2.13.0,>=2.8.0->modelscope) (1.3.1)
      Requirement already satisfied: typing-extensions>=3.7.*.* in /opt/*/lib/python3.8/site-packages (from huggingface-hub<1.0.0,>=0.11.0->datasets<=2.13.0,>=2.8.0->modelscope) (4.4.0)
      Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/*/lib/python3.8/site-packages (from packaging->datasets<=2.13.0,>=2.8.0->modelscope) (3.0.9)
      Requirement already satisfied: cffi>=1.12 in /opt/*/lib/python3.8/site-packages (from cryptography>=2.6.0->aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (1.15.1)
      Requirement already satisfied: pycparser in /opt/*/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=2.6.0->aliyun-python-sdk-core>=2.13.12->oss2->modelscope) (2.21)
      Installing collected packages: sortedcontainers, simplejson, gast, modelscope
      Successfully installed gast-0.5.4 modelscope-1.9.5 simplejson-3.19.2 sortedcontainers-2.4.0
      WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
    3. 次のコマンドを実行して、Python 環境に入ります。

    4. python
    5. 次のコードは、Qwen-7B モデルのモデルファイルをダウンロードする方法を示しています。

    6. # ### モデルとトークナイザーの読み込み
      from modelscope.hub.snapshot_download import snapshot_download
      model_dir = snapshot_download('qwen/Qwen-7B', 'v1.1.4')
      # model_dir = snapshot_download('qwen/Qwen-14B', 'v1.0.4')
      # model_dir = snapshot_download('qwen/Qwen-72B')
      # ダウンロードパスを取得します。
      print(model_dir)
      # /root/.cache/modelscope/hub/qwen/Qwen-7B
    7. Ctrl+D を押して Python 環境を終了します。

    8. 次のコマンドを実行して、ダウンロードした Qwen モデルを対応するフォルダに移動します。

    9. # mkdir -p /mnt/workspace/qwen-ckpts/${ckpt_folder_with_hf_suffix}
      mkdir -p /mnt/workspace/qwen-ckpts/qwen-7b-hf
      # cp -r ${path_to_downloaded_model}/* /mnt/workspace/qwen-ckpts/${ckpt_folder_with_hf_suffix}
      cp -r /root/.cache/modelscope/hub/qwen/Qwen-7B/* /mnt/workspace/qwen-ckpts/qwen-7b-hf

    HuggingFace コミュニティからモデルをダウンロード

    DSW ターミナルで、次のコマンドを実行してモデルファイルをダウンロードします。このガイドでは、Qwen-7B モデルを例として使用します。Qwen-14B または Qwen-72B モデルファイルをダウンロードするには、必要に応じて次のコードを修正してください。

    mkdir /mnt/workspace/qwen-ckpts
    cd /mnt/workspace/qwen-ckpts
    git clone https://huggingface.co/Qwen/Qwen-7B
    # git clone https://huggingface.co/Qwen/Qwen-7B-Chat
    # git clone https://huggingface.co/Qwen/Qwen-14B
    # git clone https://huggingface.co/Qwen/Qwen-14B-Chat
    # git clone https://huggingface.co/Qwen/Qwen-72B
    # git clone https://huggingface.co/Qwen/Qwen-72B-Chat

ステップ 2: 事前学習データの準備

DSW インスタンスで事前学習データを準備することを推奨します。このガイドでは、研究目的のみの WuDaoCorpora2.0 データセットを例として、Megatron トレーニングのデータ前処理ワークフローを示します。PAI が準備した小規模なサンプルデータをダウンロードするか、次の手順に従って自分で事前学習データを準備できます。

PAI が処理した小規模なサンプルデータを使用

このソリューションを試すために、PAI は処理済みの小規模なサンプルデータを提供しています。DSW ターミナルで次のコマンドを実行して、サンプルデータをダウンロードできます。

mkdir /mnt/workspace/qwen-datasets/
cd /mnt/workspace/qwen-datasets
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/alpaca_zh-qwen-train.json
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/alpaca_zh-qwen-valid.json
mkdir -p /mnt/workspace/qwen-datasets/wudao
cd /mnt/workspace/qwen-datasets/wudao
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/wudao_qwenbpe_content_document.bin
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-datasets/wudao_qwenbpe_content_document.idx

自分でデータを処理

  1. オープンソースの WuDaoCorpora2.0 データセットを /mnt/workspace/qwen-datasets 作業ディレクトリにダウンロードします。このガイドでは、解凍されたフォルダを wudao_200g と名付けます。

    PAI はデモンストレーション用のサンプルデータを提供しています。DSW ターミナルで次のコマンドを実行して、データセットをダウンロードし、解凍できます。

    mkdir /mnt/workspace/qwen-datasets
    cd /mnt/workspace/qwen-datasets
    wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/datasets/WuDaoCorpus2.0_base_sample.tgz
    tar zxvf WuDaoCorpus2.0_base_sample.tgz 
    mv WuDaoCorpus2.0_base_sample wudao_200g
  2. ターミナルで、次のコマンドを実行して Wudao データに対してデータクレンジングとファイル形式変換を実行します。これにより、マージされた merged_wudao_cleaned.json ファイルが生成されます。

    #! /bin/bash
    set -ex
    # 生データが保存されているパスを設定します。
    data_dir=/mnt/workspace/qwen-datasets/wudao_200g
    
    # データクレンジングプロセスを開始します。
    dataset_dir=$(dirname $data_dir)
    mkdir -p ${dataset_dir}/cleaned_wudao_dataset
    cd ${dataset_dir}/cleaned_wudao_dataset
    wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama2-codes/preprocess_wudao2.py
    # 前のセクションとは異なり、キーパラメーターが追加され、text に設定されます。
    python preprocess_wudao2.py -i ${data_dir} -o ${dataset_dir}/cleaned_wudao_dataset -k text -p 32
    
    # クレンジングされたデータをマージします。
    mkdir ${dataset_dir}/wudao
    cd ${dataset_dir}/wudao
    find ${dataset_dir}/cleaned_wudao_dataset -name "*.json" -exec cat {} + > ${dataset_dir}/wudao/merged_wudao_cleaned.json
    rm -rf ${dataset_dir}/cleaned_wudao_dataset
    

    コマンドが実行されると、qwen-datasets ディレクトリのファイル構造は次のようになります。新しい wudao フォルダが追加されます。

    qwen-datasets
    ├── wudao_200g 
    └── wudao
        └── merged_wudao_cleaned.json
  3. ターミナルで、次のコマンドを実行して merged_wudao_cleaned.json ファイルを複数のグループに分割し、圧縮します。これにより、後続のステップでのマルチスレッド処理が容易になります。

    apt-get update
    apt-get install zstd
    
    # チャンク数は 10 に設定されています。データ処理が遅い場合は、この値を増やすことができます。
    NUM_PIECE=10
    
    # merged_wudao_cleaned.json ファイルを処理します。
    mkdir -p ${dataset_dir}/cleaned_zst/
    # 全データ長を照会し、データを分割します。
    NUM=$(sed -n '$=' ${dataset_dir}/wudao/merged_wudao_cleaned.json)
    echo "total line of dataset is $NUM, data will be split into $NUM_PIECE pieces for processing"
    NUM=`expr $NUM / $NUM_PIECE`
    echo "each group is processing $NUM sample"
    split_dir=${dataset_dir}/split
    mkdir $split_dir
    split -l $NUM --numeric-suffixes --additional-suffix=.jsonl ${dataset_dir}/wudao/merged_wudao_cleaned.json $split_dir/
    
    # データを圧縮します。
    o_path=${dataset_dir}/cleaned_zst/
    mkdir -p $o_path
    files=$(ls $split_dir/*.jsonl)
    for filename in $files
    do
       f=$(basename $filename)
       zstd -z $filename -o $o_path/$f.zst &
    done
    rm -rf $split_dir
    rm ${dataset_dir}/wudao/merged_wudao_cleaned.json
    

    コマンドが実行されると、qwen-datasets ディレクトリのファイル構造は次のようになります。新しい cleaned_zst フォルダが追加され、10 個の圧縮ファイルが含まれます。

    qwen-datasets
    ├── wudao_200g
    ├── wudao
    └── cleaned_zst
        ├── 00.jsonl.zst
    		│   ...
        └── 09.jsonl.zst
  4. MMAP 形式の事前学習データセットを作成します。

    MMAP は、事前トークン化済みのデータ形式であり、トレーニングおよびファインチューニング中にデータ読み取りの待機時間を短縮します。これは、特に大規模なデータを処理する場合に有利です。次の手順に従います。

    1. DSW ターミナルで、次のコマンドを実行して、Megatron のモデルトレーニングツールである PAI-Megatron-Patch のソースコードを DSW の作業ディレクトリ /mnt/workspace/ にコピーします。

      cd /mnt/workspace/
      # 方法 1: オープンソースのウェブサイトからトレーニングコードを取得します。
      git clone --recurse-submodules https://github.com/alibaba/Pai-Megatron-Patch.git
      # 方法 2: wget を使用してトレーニングコードを取得します。tar zxvf Pai-Megatron-Patch.tgz を実行してファイルを解凍する必要があります。
      wget https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/models/Pai-Megatron-Patch.tgz
    2. ターミナルで、次のコマンドを実行してデータを MMAP 形式に変換します。

      コマンドが実行されると、.bin および .idx ファイルが /mnt/workspace/qwen-datasets/wudao ディレクトリに生成されます。

      # Qwen に必要なトークナイザーライブラリをインストールします。
      pip install tiktoken
      # データセットパスと作業ディレクトリを設定します。
      export dataset_dir=/mnt/workspace/qwen-datasets
      export WORK_DIR=/mnt/workspace
      
      # トレーニングセットと検証セット用の MMAP 形式の事前学習データセットを生成します。
      cd ${WORK_DIR}/Pai-Megatron-Patch/toolkits/pretrain_data_preprocessing
      bash run_make_pretraining_dataset.sh \
      ../../Megatron-LM-23.04 \
      ${WORK_DIR}/Pai-Megatron-Patch/ \
      ${dataset_dir}/cleaned_zst/ \
      qwenbpe \
      ${dataset_dir}/wudao/ \
      ${WORK_DIR}/qwen-ckpts/qwen-7b-hf
      rm -rf ${dataset_dir}/cleaned_zst

      次の表は、run_make_pretraining_dataset.sh を実行するための 6 つの開始パラメーターを説明しています。

      パラメーター

      説明

      MEGATRON_PATH=$1

      オープンソースの Megatron コードのパス。

      MEGATRON_PATCH_PATH=$2

      Megatron Patch コードのパス。

      input_data_dir=$3

      パッケージ化された WuDao データセットを含むフォルダのパス。

      tokenizer=$4

      トークナイザーのタイプ。これを qwenbpe に設定します。

      output_data_dir=$5

      出力の .bin および .idx ファイルを保存するパス。

      load_dir=$6

      生成された tokenizer_config.json ファイルのパス。

      スクリプトが実行されると、qwen-datasets ディレクトリのファイル構造は次のようになります。

      qwen-datasets
      ├── wudao_200g
      └── wudao
         ├── wudao_qwenbpe_content_document.bin
         └── wudao_qwenbpe_content_document.idx

ステップ 3: Megatron を使用したモデルのトレーニング

次の手順に従って、Megatron でモデルをトレーニングできます。

モデルフォーマットの変換

HuggingFace モデルファイルを Megatron フォーマットに変換します。

変換済みの Megatron モデルをダウンロード

このソリューションを試すために、PAI はすでにフォーマットが変換されたモデルを提供しています。ターミナルで次のコマンドを実行してモデルをダウンロードできます。

cd /mnt/workspace/
mkdir qwen-ckpts
cd qwen-ckpts
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/qwen-ckpts/qwen-7b-hf-to-mg-tp1-pp1.tgz
tar -zxf qwen-7b-hf-to-mg-tp1-pp1.tgz
mv qwen-7b-hf-to-mg-tp1-pp1 qwen-7b-hf-to-megatron-tp1-pp1

HuggingFace モデルを Megatron フォーマットに変換

ターミナルで、次のコマンドを実行して PAI が提供するモデル変換ツールを使用し、HuggingFace モデルファイルを Megatron フォーマットに変換します。

# モデルを変換します。
cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen
sh model_convertor.sh \
../../../Megatron-LM-main        \
/mnt/workspace/qwen-ckpts/qwen-7b-hf         \
/mnt/workspace/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1  \
1  \
1  \
qwen-7b \
0 \
false

次の表は、model_convertor.sh を実行するためのパラメーターを説明しています。

パラメーター

説明

MEGATRON_PATH=$1

オープンソースの Megatron コードのパス。

SOURCE_CKPT_PATH=$2

HuggingFace モデルファイルのパス。

TARGET_CKPT_PATH=$3

変換された Megatron モデルを保存するパス。

TP=$4

テンソル並列処理シャードの数。これはトレーニングに使用される数と同じでなければなりません。シャードの数はモデルサイズによって異なります。モデルを変換する際に、必要に応じてこのパラメーターを修正してください。

  • Qwen-7B: 1。

  • Qwen-14B: 2。

  • Qwen-72B: 8。

PP=$5

パイプライン並列処理シャードの数。これはトレーニングに使用される数と同じでなければなりません。シャードの数はモデルサイズによって異なります。モデルを変換する際に、必要に応じてこのパラメーターを修正してください。

  • Qwen-7B: 1。

  • Qwen-14B: 1。

  • Qwen-72B: 2。

MN=$6

モデル名:qwen-7b、qwen-14b、または qwen-72b。

EXTRA_VOCAB_SIZE=$7

追加の語彙サイズ。

mg2hf=$8

Megatron モデルを HuggingFace モデルに変換するかどうかを指定します。

事前学習済みモデル

単一の DSW インスタンスでモデルを事前学習するか、DLC 環境でマルチ GPU サーバーを使用した分散トレーニングタスクを送信できます。トレーニングプロセスには約 2 時間かかります。タスクが成功すると、モデルファイルは /mnt/workspace/output_megatron_qwen/ ディレクトリに保存されます。

DSW スタンドアロン事前学習済みモデル

次のコードは、ターミナルで Qwen-7B モデルのコマンドを実行する方法の例を示しています。

export WORK_DIR=/mnt/workspace
cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
sh run_pretrain_megatron_qwen.sh  \
dsw  \
${WORK_DIR}/Pai-Megatron-Patch  \
7B   \
1    \
8 \
1e-5   \
1e-6   \
2048  \
2048  \
85   \
fp16  \
1   \
1  \
sel  \
true   \
false  \
false   \
false  \
100000  \
${WORK_DIR}/qwen-datasets/wudao/wudao_qwenbpe_content_document   \
${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
100000000   \
10000   \
${WORK_DIR}/output_megatron_qwen/   

次の表は、run_pretrain_megatron_qwen.sh を実行するためのパラメーターを説明しています。

パラメーター

説明

ENV=$1

実行環境:

  • dsw

  • dlc

MEGATRON_PATH=$2

オープンソースの Megatron コードのパス。

MODEL_SIZE=$3

モデルサイズ:7B、14B、または 72B。

BATCH_SIZE=$4

各 GPU での 1 回のトレーニング反復あたりのサンプル数:4 または 8。

GLOBAL_BATCH_SIZE=$5

トレーニングサンプルの総数。

LR=$6

学習率:1e-5 または 5e-5。

MIN_LR=$7

最小学習率:1e-6 または 5e-6。

SEQ_LEN=$8

シーケンス長。

PAD_LEN=${9}

パディング長。

EXTRA_VOCAB_SIZE=${10}

追加の語彙サイズ:

  • Qwen-7B: 85。

  • Qwen-14B: 213。

  • Qwen-72B: 213。

PR=${11}

トレーニング精度:fp16 または bf16。

TP=${12}

モデル並列処理の度合い。

PP=${13}

パイプライン並列処理の度合い。

AC=${14}

アクティベーションチェックポイントモード:

  • full

  • sel

DO=${15}

VRAM 使用量を削減するために Megatron バージョンの Zero-1 オプティマイザーを使用するかどうかを指定します。

  • true

  • false

FL=${16}

Flash Attention を有効にするかどうかを指定します。

  • true

  • false

SP=${17}

シーケンス並列処理を使用するかどうかを指定します。

  • true

  • false

TE=${18}

Transformer-engine アクセラレーションを有効にするかどうかを指定します。この機能には gu8xf GPU が必要です。

SAVE_INTERVAL=${19}

チェックポイントファイルを保存する間隔。

DATASET_PATH=${20}

トレーニングデータセットのパス。

PRETRAIN_CHECKPOINT_PATH=${21}

事前学習済みモデルのパス。

TRAIN_TOKENS=${22}

トレーニングトークン

WARMUP_TOKENS=${23}

ウォームアップトークンの数。

OUTPUT_BASEPATH=${24}

出力モデルファイルを保存するパス。

DLC 分散事前学習済みモデル

単一インスタンスでのデバッグ後、DLC 環境でマルチ GPU サーバーを使用した分散タスクを設定できます。次の手順に従います。

  1. [ジョブの作成] ページに移動します。

    1. PAI コンソール」にログインします。ページ上部で対象のリージョンとワークスペースを選択し、[ディープラーニングコンテナ (DLC)] をクリックします。

    2. ディープラーニングコンテナ (DLC) ページで、Create Job をクリックします。

  2. Create Job ページで、次の主要なパラメーターを設定し、その他のパラメーターはデフォルト値のままにします。詳細については、「トレーニングタスクを作成する」をご参照ください。

    パラメーター

    説明

    Basic Information

    Job Name

    カスタムタスク名を入力します。このガイドでは test_qwen_dlc を使用します。

    Environment Information

    Image Configuration

    [Image Address] を選択し、テキストボックスに pai-image-manage-registry.cn-wulanchabu.cr.aliyuncs.com/pai/pytorch-training:1.12-ubuntu20.04-py3.10-cuda11.3-megatron-patch-llm を入力します。

    Mount dataset

    Custom Dataset をクリックし、以下のパラメーターを設定します:

    • Custom Dataset:作成した NAS データセットを選択します。

    • Mount Path:これを /mnt/workspace/ に設定します。

    Startup Command

    次のコマンドを設定します。run_pretrain_megatron_qwen.sh スクリプトの開始パラメーターは、単一の DSW インスタンスでモデルを事前学習する場合と同じです。

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    sh run_pretrain_megatron_qwen.sh  \
    dlc  \
    ${WORK_DIR}/PAI-Megatron-Patch  \
    7B   \
    1    \
    8 \
    1e-5   \
    1e-6   \
    2048  \
    2048  \
    85   \
    fp16  \
    1   \
    1  \
    sel  \
    true   \
    false  \
    false   \
    false \
    100000  \
    ${WORK_DIR}/qwen-datasets/wudao/wudao_qwenbpe_content_document   \
    ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
    100000000   \
    10000   \
    ${WORK_DIR}/output_megatron_qwen/    

    Resource Information

    Resource Type

    Lingjun インテリジェントコンピューティングを選択します。

    Source

    Resource Type を選択します。

    Resource Type

    Lingjun リソース用に作成したリソースクォータを選択します。

    Framework

    PyTorch を選択します。

    Job Resource

    Worker ノードに次のパラメーターを設定します。

    • Nodes: 2。 マルチノードトレーニングを実行するには、Nodes を必要な台数に設定します。

    • GPUs: 8

    • vCPUs: 90

      説明

      CPU コアの数は 96 を超えることはできません。

    • Memory (GiB): 1024

    • Shared Memory (GiB):1024

  3. OK をクリックします。ページは自動的に Deep Learning Containers (DLC) ページに移動します。StatusSucceeded に変更されると、トレーニングタスクは成功です。

教師あり学習によるモデルのファインチューニング

単一の DSW インスタンスでモデルをファインチューニングするか、DLC 環境でマルチ GPU サーバーを使用した分散タスクを送信できます。トレーニングプロセスには約 2 時間かかります。タスクが成功すると、モデルファイルは /mnt/workspace/output_megatron_qwen/ ディレクトリに保存されます。

  1. モデルをファインチューニングする前に、「ステップ 2: 事前学習データの準備」セクションに移動します。PAI が処理した小規模なサンプルデータを使用タブで、提供されたコードを使用して JSON ファイルをダウンロードします。

  2. モデルをファインチューニングします。

    単一の DSW インスタンスでのモデルのファインチューニング

    次のコードは、ターミナルで Qwen-7B モデルのコマンドを実行する方法の例を示しています。

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    sh run_finetune_megatron_qwen_withGA.sh  \
    dsw  \
    ${WORK_DIR}/Pai-Megatron-Patch  \
    7B     \
    1      \
    96 \
    1e-5   \
    1e-6   \
    2048   \
    2048     \
    85      \
    bf16   \
    1      \
    1      \
    sel    \
    true   \
    false  \
    false  \
    false \
    1000 \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-train.json   \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-valid.json   \
    ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
    2000   \
    10 \
    ${WORK_DIR}/output_megatron_qwen/

    次の表は、run_finetune_megatron_qwen_withGA.sh を実行するためのパラメーターを説明しています。

    パラメーター

    説明

    ENV=$1

    実行環境:

    • dlc

    • dsw

    MEGATRON_PATH=$2

    オープンソースの Megatron コードのパス。

    MODEL_SIZE=$3

    モデルサイズ:7B、14B、または 72B。

    BATCH_SIZE=$4

    各 GPU での 1 回のトレーニング反復あたりのサンプル数:1、2、4、または 8。

    GLOBAL_BATCH_SIZE=$5

    1 回のファインチューニング反復あたりのサンプル総数:64、96、または 128。

    LR=$6

    学習率:1e-5 または 5e-5。

    MIN_LR=$7

    最小学習率:1e-6 または 5e-6。

    SEQ_LEN=$8

    シーケンス長。

    PAD_LEN=$9

    パディングシーケンス長。

    EXTRA_VOCAB_SIZE=${10}

    追加の語彙サイズ:

    • Qwen-7B: 85。

    • Qwen-14B: 213。

    • Qwen-72B: 213。

    PR=${11}

    トレーニング精度:fp16 または bf16。

    TP=${12}

    モデル並列処理の度合い。

    PP=${13}

    パイプライン並列処理の度合い。

    AC=${14}

    アクティベーションチェックポイントモード:full または sel。

    DO=${15}

    VRAM 使用量を削減するために Megatron バージョンの Zero-1 オプティマイザーを使用するかどうかを指定します。

    • true

    • false

    FL=${16}

    Flash Attention を有効にするかどうかを指定します。

    • true

    • false

    SP=${17}

    シーケンス並列処理を使用するかどうかを指定します。

    • true

    • false

    TE=${18}

    Transformer-engine アクセラレーションを有効にするかどうかを指定します。この機能には gu8xf GPU が必要です。

    SAVE_INTERVAL=${19}

    モデルを保存するステップ間隔。

    DATASET_PATH=${20}

    トレーニングデータセットのパス。

    VALID_DATASET_PATH=${21}

    検証セットのパス。

    PRETRAIN_CHECKPOINT_PATH=${22}

    事前学習済みモデルのパス。

    TRAIN_ITERS=${23}

    トレーニングの反復回数。

    LR_WARMUP_ITERS=${24}

    学習率が最も増加するステップ。

    OUTPUT_BASEPATH=${25}

    出力モデルファイルを保存するパス。

    DLC での分散トレーニングによるモデルのファインチューニング

    単一の DSW インスタンスでのデバッグ後、DLC 環境でマルチ GPU サーバーを使用した分散タスクを設定できます。DLC トレーニングタスクを送信する際は、Startup Command を以下のように設定します。その他のパラメーター設定については、「手順 2: モデルの事前学習」をご参照ください。

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    sh run_finetune_megatron_qwen_withGA.sh  \
    dlc  \
    ${WORK_DIR}/Pai-Megatron-Patch  \
    7B     \
    1      \
    96 \
    1e-5   \
    1e-6   \
    2048   \
    2048     \
    85      \
    bf16   \
    1      \
    1      \
    sel    \
    true   \
    false  \
    false  \
    false \
    1000 \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-train.json   \
    ${WORK_DIR}/qwen-datasets/alpaca_zh-qwen-valid.json   \
    ${WORK_DIR}/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1   \
    2000   \
    10 \
    ${WORK_DIR}/output_megatron_qwen/

    run_finetune_megatron_qwen_withGA.sh を実行するためのパラメーターは、単一の DSW インスタンスでモデルをファインチューニングする場合と同じです。

ステップ 4: オフライン推論の実行

モデルのトレーニングが完了したら、Megatron 推論パイプラインを使用してオフライン推論を実行し、モデルのパフォーマンスを評価できます。次の手順に従います。

  1. テストサンプル pred_input.jsonl をダウンロードし、DSW の /mnt/workspace ディレクトリにアップロードします。詳細については、「ファイルのアップロードとダウンロード」をご参照ください。

    説明

    推論用のデータ構造は、ファインチューニングで使用したデータ構造と一致している必要があります。

  2. 事前学習モデルのパスからすべての JSON ファイルと tokenizer.model ファイルを、生成されたモデルのパスにコピーします。生成されたモデルのパスは、{OUTPUT_BASEPATH }/checkpoint の下のサブディレクトリで、latest_checkpointed_iteration.txt と同じレベルにあります。

    説明

    コマンド内のパスを実際のパスに置き換えてください。

    cd /mnt/workspace/qwen-ckpts/qwen-7b-hf-to-megatron-tp1-pp1
    cp *.json /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX/
    cp tokenizer.model /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX/
  3. ターミナルで、次のコマンドを実行してオフライン推論を実行します。推論結果は /mnt/workspace/qwen_pred.txt ファイルに保存されます。結果に基づいてモデルのパフォーマンスを評価できます。

    説明

    コマンドを実行する前に、run_text_generation_megatron_qwen.sh スクリプトで CUDA_VISIBLE_DEVICES パラメーターを 0 に、GPUS_PER_NODE パラメーターを 1 に設定する必要があります。

    export WORK_DIR=/mnt/workspace
    cd ${WORK_DIR}/Pai-Megatron-Patch/examples/qwen
    bash run_text_generation_megatron_qwen.sh \
    dsw \
    ${WORK_DIR}/PAI-Megatron-Patch \
    /mnt/workspace/output_megatron_qwen/checkpoint/dswXXX \
    7B \
    1 \
    1 \
    1024 \
    1024 \
    85 \
    fp16 \
    10 \
    512 \
    512 \
    ${WORK_DIR}/pred_input.jsonl \
    ${WORK_DIR}/qwen_pred.txt \
    0 \
    1.0 \
    1.2

    次の表は、run_text_generation_megatron_qwen.sh スクリプトの開始パラメーターを説明しています。

    パラメーター

    説明

    ENV=$1

    実行環境:

    • dlc

    • dsw

    MEGATRON_PATCH_PATH=$2

    Megatron Patch コードのパス。

    CHECKPOINT_PATH=$3

    トレーニングフェーズでモデルが保存されたパス。

    重要

    これをモデルのパスに置き換えてください。

    MODEL_SIZE=$4

    モデルサイズ:7B、14B、または 72B。

    TP=$5

    モデル並列処理の度合い。

    重要
    • このパラメーターが 1 に設定されている場合、単一の GPU を使用して推論できます。

    • このパラメーターが 1 より大きい値に設定されている場合、対応する数の GPU を使用して推論する必要があります。

    BS=$6

    各 GPU での 1 回の推論反復あたりのサンプル数:1、4、または 8。

    SEQ_LEN=$7

    シーケンス長:256、512、または 1024。

    PAD_LEN=$8

    PAD 長:テキストがパディングされる長さ。

    EXTRA_VOCAB_SIZE=${9}

    モデル変換中に追加されたトークンの数:

    • Qwen-7B: 85。

    • Qwen-14B: 213。

    • Qwen-72B: 213。

    PR=${10}

    推論に使用される精度:fp16 または bf16。

    TOP_K=${11}

    top-k フィルタリングのために保持する最も確率の高い語彙トークンの数 (0 から n):0、5、10、または 20。

    INPUT_SEQ_LEN=${12}

    入力シーケンス長:512。

    OUTPUT_SEQ_LEN=${13}

    出力シーケンス長:256。

    INPUT_FILE=${14}

    推論用のテキストファイル:pred_input.jsonl。各行は 1 つのサンプルです。

    OUTPUT_FILE=${15}

    推論用の出力ファイル:qwen_pred.txt。

    TOP_P=${16}

    top-p フィルタリングの累積確率 (0 から 1):0、0.85、または 0.95。

    説明

    TOP_K と TOP_P のうち、どちらか一方のみがゼロ以外にできます。

    TEMPERATURE=${17}

    (サンプリング)(ポリシー) における温度ペナルティ:1–n。

    REPETITION_PENALTY=${18}

    繰り返しのペナルティ。値は 1 から 2 の範囲です。デフォルト値は 1.2 です。

ステップ 5: モデルフォーマットの変換

オフライン推論を完了し、モデルのパフォーマンスが期待どおりであれば、トレーニング済みの Megatron モデルを HuggingFace フォーマットに変換できます。その後、変換された HuggingFace モデルをオンラインサービスデプロイに使用できます。次の手順に従います。

  1. ターミナルで、次のコマンドを実行して、トレーニング済みの Megatron モデルを HuggingFace フォーマットに変換します。

    export WORK_DIR=/mnt/workspace
    cd /mnt/workspace/Pai-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen
    sh model_convertor.sh \
    ../../../Megatron-LM-main        \
    ${WORK_DIR}/output_megatron_qwen/checkpoint/${path}/iter_*******         \
    /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1/  \
    1  \
    1  \
    qwen-7b \
    0 \
    true

    次の表は、model_convertor.sh スクリプトを実行するためのパラメーターを説明しています。

    パラメーター

    説明

    MEGATRON_PATH=$1

    オープンソースの Megatron コードのパス。

    SOURCE_CKPT_PATH=$2

    トレーニングから得られた Megatron モデルのパス。パスは iter_* ディレクトリに固有でなければなりません。例:${WORK_DIR}/output_megatron_qwen/checkpoint/dsw-pretrain-megatron-qwen-7B-lr-1e-5-bs-1-seqlen-2048-pr-bf16-tp-1-pp-1-ac-sel-do-true-sp-false-tt--wt-/iter_*******

    重要
    • これをモデルのパスに置き換えてください。

    • 変換に事前学習済みモデルを使用する場合、モデルパスからすべての distrib_optim.pt ファイルを削除します。

    TARGET_CKPT_PATH=$3

    変換された HuggingFace モデルを保存するパス。

    TP=$4

    テンソル並列処理シャードの数。これはトレーニングに使用される数と同じでなければなりません。

    PP=$5

    パイプライン並列処理シャードの数。これはトレーニングに使用される数と同じでなければなりません。

    MN=$6

    モデル名:qwen-7b、qwen-14b、または qwen-72b。

    EXTRA_VOCAB_SIZE=$7

    追加の語彙サイズ。

    mg2hf=$8

    Megatron モデルを HuggingFace モデルに変換するかどうかを指定します。

  2. オープンソースの HuggingFace モデルフォルダ /mnt/workspace/qwen-ckpts/qwen-7b-hf から .json.py、および .tiktoken ファイルを /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1 ディレクトリにコピーして、モデルが使用できるようにします。

    重要

    pytorch_model.bin.index.json ファイルをコピーする必要はありません。

HuggingFace モデルでオフライン推論を実行

HuggingFace & DeepSpeed 推論パイプラインを使用して、変換された HuggingFace モデルファイルでオフライン推論を実行できます。Qwen-7B モデルを例にとり、ターミナルの任意のディレクトリに次の内容で infer.py ファイルを作成します。infer.py ファイルを実行してオフライン推論を実行し、結果に基づいてモデルのパフォーマンスを評価します。

#!/usr/bin/env python
#encoding=utf-8
from transformers import AutoTokenizer, LlamaTokenizer
from transformers import LlamaForCausalLM
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
 
checkpoint = '/mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1'
print(checkpoint)
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(checkpoint,device_map="auto", trust_remote_code=True)
 
prompts= 'Write a quicksort algorithm'
p = f"Human:{prompts}"
print(p)
inputs = tokenizer.encode(p, return_tensors="pt").to(model.device)
outputs = model.generate(inputs,max_new_tokens=512)
print(tokenizer.decode(outputs[0]))

checkpoint を、変換された HuggingFace モデルファイルが保存されているパスに置き換えます。このガイドでは /mnt/workspace/qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1 を使用します。

ステップ 6: モデルサービスのデプロイと呼び出し

オフライン推論を完了し、モデルのパフォーマンスを評価した後、変換された HuggingFace モデルをオンラインサービスとしてデプロイし、本番環境で推論のために呼び出すことができます。次の手順に従います。

モデルサービスのデプロイ

  1. PAI コンソールにログインします。ページ上部でリージョンを選択します。次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS)] をクリックします。

  2. [サービスのデプロイ] をクリックします。[カスタムモデルのデプロイメント] セクションで、[カスタムデプロイメント] をクリックします。

  3. Custom Deployment ページで、以下のキーパラメーターを設定し、その他のパラメーターはデフォルト値のままにします。

    パラメーター

    説明

    Basic Information

    Service Name

    リージョン内で一意のカスタムモデルサービス名を入力します。このガイドでは test_qwen を使用します。

    Environment Information

    Deployment Method

    Image-based Deployment を選択し、Enable Web App を選択します。

    Image Configuration

    [Image Address] を選択し、テキストボックスに次のレジストリアドレスを入力します:eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.4-vllm

    Directly Mount

    マウントタイプとして NAS を選択します。Standard NAS をクリックし、以下のパラメーターを設定します。

    • Select File System:データセットの作成に使用した NAS ファイルシステムを選択します。

    • Mount Target:データセットの作成に使用したマウントポイントを選択します。

    • File System Path:NAS に保存されている変換済み HuggingFace モデルのパスに設定します。このガイドでは /qwen-ckpts/qwen-7b-mg-to-hf-tp1-pp1 を使用します。

    • Mount Path:マウント後のパスを指定します。このガイドでは /qwen-7b を使用します。

    Command

    これを python webui/webui_server.py --port=8000 --model-path=/qwen-7b --tensor-parallel-size 1 --backend=vllm に設定します。

    ここで:

    • --model-path:モデル設定のマウントパスと同じでなければなりません。

    • --tensor-parallel-size:モデルのテンソル並列処理シャードの数。これは GPU の数に基づいて調整する必要があります。7B モデルの場合は 1 に、72B モデルの場合は 8 に設定します (8 GPU インスタンスが必要)。

    Port Number

    これを 8000 に設定します。

    Resource Information

    Resource Type

    Resource Quota を選択します。

    Resource Quota

    Lingjun リソース用に作成したリソースクォータを選択します。

    Instance Count

    モデルと選択したリソースに基づいて設定します。 7B モデルの場合、Instance Count を 1 に設定します。

    Deployment

    7B モデルの場合、各インスタンスが使用するリソースを次のように設定します。

    • vCPUs: 16。

    • Memory (GB): 64.

    • GPUs:1。

    Service Access

    VPC

    NAS マウントポイントを設定すると、システムは自動的に VPC、vSwitch、およびセキュリティグループをプリセットの NAS ファイルシステムと一致させます。

    vSwitch

    Security Group Name

  4. Deploy をクリックします。

    Service Status]が[Running]に変わると、サービスがデプロイされます。

サービスの呼び出し

サービスがデプロイされた後、推論のために呼び出すことができます。次の手順に従います。

  1. サービス一覧で、対象のサービスの名前をクリックします。ページの右上隅で、View Web App をクリックします。

  2. WebUI ページで、モデル推論を実行します。