cube Studio を使用して機械学習モデリング パイプラインを開発する

(執筆者: 陳 玉娥)

Cube Studio には現在、従来の機械学習テンプレート、400 以上の AI モデルが含まれています。詳細についてはプライベート メッセージへようこそ!

モデルのトレーニングや推論に cube Studio を使用する過程で、要件を満たすテンプレートがないことが判明することがあります。現時点では、将来同様のモデリングやモニタリングのシナリオで直接使用できるように、テンプレートを作成してパイプラインを構築する必要があります。 . 、再利用とスケジュール設定を容易にするため。

以下は、cube Studio を使用してパイプラインを構築する方法を記録する、ランダム フォレスト モデリング用のパイプラインを構築する例です。

1. コードの構築

ランダム フォレスト モデリング コードの作成と通常のモデリングの違いは、ここでのコードには入力パラメーターが必要であることです。テンプレートをより適切に実行するには入力パラメーターが必要であるため、これをテンプレートに接続します。ここではコードは示しません。これらは誰もが知っていますが、通常のモデリングとは異なる入力パラメーターを示すだけです。

if __name__ == "__main__":
    arg_parser = argparse.ArgumentParser("train lr launcher")
    arg_parser.add_argument('--train_dataset', type=str, help="训练数据集来源", default='')
    arg_parser.add_argument('--val_dataset', type=str, help="评估数据集名称", default='')
    arg_parser.add_argument('--feature_columns', type=str, help="特征列", default='')
    arg_parser.add_argument('--label_columns', type=str, help="标签列", default='')
    arg_parser.add_argument('--save_model_dir', type=str, help="模型地址", default='')
    arg_parser.add_argument('--save_val_dir', type=str, help="模型训练集和测试集评估结果地址", default='')
    arg_parser.add_argument('--inference_dataset', type=str, help="推理数据集名称", default='')
    arg_parser.add_argument('--result_path', type=str, help="推理结果保存地址", default='')

トレーニング プロセスを行う方法で重要なのは、テンプレートの設計の開始時に明確に考慮する必要がある入力パラメータであり、どのパラメータをテンプレートに渡す必要があるか、どの結果を出力する必要があるかです。

ノートブックで実行した後、次のステップに進むことができます。

2. イメージのビルド

1. git clone cube スタジオ プロジェクト;

2. cube-studio/job-template/job/ フォルダーの下に、新しい Randomforest フォルダーを作成し、このフォルダーに py ファイルを置き、launcher.py という名前を付けます。

3. 上記と同じフォルダーの下に、さらに 3 つのファイル、build.sh、Dockerfile、README.md をビルドします。 

build.sh がイメージをビルドしてプッシュする場所

#!/bin/bash

set -ex

docker build -t ccr.ccs.tencentyun.com/cube-studio/lightgbm:20230428 -f job/lightgbm/Dockerfile .
docker push ccr.ccs.tencentyun.com/cube-studio/lightgbm:20230428

Dockerfile も人によって異なります。主に変更する必要があるのは、どのパッケージをインストールする必要があるか、およびどのフォルダーに launcher.py を使用するかです。

FROM python:3.9

ENV TZ Asia/Shanghai
ENV DEBIAN_FRONTEND noninteractive

RUN /usr/local/bin/python -m pip install --upgrade pip

RUN pip install pysnooper psutil requests numpy scikit-learn pandas pyinstaller tinyaes joblib argparse 
#-i https://pypi.tuna.tsinghua.edu.cn/simple/
#http://pypi.douban.com/simple/ --trusted-host pypi.douban.com



COPY job/random_forest/launcher.py /app/

WORKDIR /app
ENV PYTHONPATH=/app:$PYTHONPATH

RUN pyinstaller --onefile --key=kaiqiao launcher.py && cp dist/launcher ./ && rm -rf launcher.py launcher.spec build dist

ENTRYPOINT ["./launcher"]

README.md は、テンプレートのフロントエンド表示を設定するために使用される入力パラメータを記述するために使用されます。

# randomforest 模板
镜像:ccr.ccs.tencentyun.com/cube-studio/randomforest:20230427

参数
```bash
{
    "训练相关参数": {
      "--train_dataset": {
        "type": "str",
        "item_type": "str",
        "label": "训练数据集",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "训练数据集",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--save_val_dir": {
        "type": "str",
        "item_type": "str",
        "label": "训练集和测试集acc输出文件地址",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "训练集和测试集acc输出文件地址,txt文件",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--label_columns": {
        "type": "str",
        "item_type": "str",
        "label": "标签列",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "标签列,逗号分割",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--save_model_dir": {
        "type": "str",
        "item_type": "str",
        "label": "模型保存目录",
        "require": 1,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "模型保存目录",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      } ,
      "--feature_columns": {
        "type": "str",
        "item_type": "str",
        "label": "特征列,逗号分隔",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "特征列,逗号分隔",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      }
    },
    "推理相关参数": {
      "--result_path": {
        "type": "str",
        "item_type": "str",
        "label": "推理结果保存路径",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "推理结果保存路径",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--inference_dataset": {
        "type": "str",
        "item_type": "str",
        "label": "推理数据集",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "推理数据集",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--save_model_dir": {
        "type": "str",
        "item_type": "str",
        "label": "模型保存目录",
        "require": 1,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "模型保存目录",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--label_columns": {
        "type": "str",
        "item_type": "str",
        "label": "标签列",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "标签列,逗号分割",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--feature_columns": {
        "type": "str",
        "item_type": "str",
        "label": "特征列,逗号分隔",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "特征列,逗号分隔",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      }
    },
    "验证相关参数": {
      "--val_dataset": {
        "type": "str",
        "item_type": "str",
        "label": "验证数据集",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "验证数据集",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--save_model_dir": {
        "type": "str",
        "item_type": "str",
        "label": "模型保存目录",
        "require": 1,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "模型保存目录",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--label_columns": {
        "type": "str",
        "item_type": "str",
        "label": "标签列",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "标签列,逗号分割",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      },
      "--feature_columns": {
        "type": "str",
        "item_type": "str",
        "label": "特征列,逗号分隔",
        "require": 0,
        "choice": [],
        "range": "",
        "default": "",
        "placeholder": "",
        "describe": "特征列,逗号分隔",
        "editable": 1,
        "condition": "",
        "sub_args": {}
      }
    }
}
```

4. Docker をインストールし、次の操作を行います。

cd /data/k8s/kubeflow/pipeline/workspace/admin/cube-studio/job-template
sh job/random_forest/build.sh

3. 画像管理

先ほど生成に成功したイメージをイメージ管理に追加します。イメージ名はbuild.sh内のイメージ名になります。 

4. テンプレートの追加

モデルトレーニングにタスクテンプレートを追加する 

これは主に、画像を選択し、テンプレートの起動パラメータ、つまり README.md に設定されたパラメータ群を設定することです。

5. パイプラインを作成する 

ページのホームページに入り、「新しいパイプライン」を選択します。

 左側のテンプレートについて、要件に従ってドラッグ アンド ドロップし、タスク ノードをクリックし、実行パラメータを設定すると、実行できます。

それはこのように動作します

バグがある場合は、ノードをクリックしてログを表示し、問題のトラブルシューティングを行います。

それでおしまい! 

おすすめ

転載: blog.csdn.net/weixin_39750084/article/details/129833264