EnergonAI - 大規模モデル推論。

(Large-scale model inference.)

Created at: 2022-01-24 11:43:46
Language: Python
License: Apache-2.0

エネルゴンAI

GitHub ライセンス

大規模モデル推論のためのサービスフレームワークであるEnergon-AIは、以下の特徴を有する。

  • 大規模モデルの並列処理:テンソル並列演算、パイプライン並列ラッパー、分散チェックポイント読み込み、カスタマイズされたCUDAカーネルにより、EnergonAIは大規模モデルの効率的な並列推論を可能にします。
  • 構築済みの大規模モデル:OPTなどの一般的なモデル用に事前に構築された実装があります。生成タスクと分散パラメータの読み込みのためのキャッシュ手法をサポートしています。
  • エンジンのカプセル化:エンジンと呼ばれる抽象化レイヤーがあります。単一インスタンス複数デバイス (SIMD) の実行をリモート プロシージャ コールでカプセル化し、単一インスタンス単一デバイス (SISD) の実行として機能します。
  • オンラインサービスシステム:FastAPIに基づいて、ユーザーは分散推論のWebサービスを迅速に起動できます。オンラインサービスは、生成タスクに対して特別な最適化を行います。効率を向上させるために、左パディングとバケットバッチ処理の両方の手法を採用しています。

Colossal-AIによってトレーニングされたモデルの場合、それらはEnergon-AIに簡単に転送できます。 単一デバイス モデルの場合、テンソル並列処理とパイプライン並列処理を導入するために手動コーディング作業が必要です。

取り付け

ソースからインストール

$ git clone git@github.com:hpcaitech/EnergonAI.git
$ pip install -r requirements.txt
$ pip install .

ドッカーを使用する

$ docker pull hpcaitech/energon-ai:latest

オンラインOPTサービスを5分で構築

  1. OPTモデルをダウンロード:分散推論サービスを迅速に起動するには、OPT-125Mのチェックポイントをここからダウンロードできます。他のサイズのモデルを読み込む方法の詳細については、こちらをご覧ください

  2. HTTP サービスを起動します。サービスを起動するには、モデルの種類と関連する構成を記述する Python スクリプトを提供し、http サービスを開始する必要があります。 OPTの例はEnergonAI/examples/optです。
    サービスの入り口はbashスクリプト server.sh です。 サービスの構成は opt_config.py で、モデルの種類、チェックポイント ファイルのパス、並列戦略、および http 設定を定義します。あなたはあなた自身のケースのためにそれを適応させることができます。 たとえば、モデル クラスを opt_125M に設定し、正しいチェックポイント パスを次のように設定します。テンソル並列処理の次数を GPU 番号と同じに設定します。

        model_class = opt_125M
        checkpoint = 'your_file_path'
        tp_init_size = #gpu

    これで、サービスを開始できます。

        bash server.sh

    次に、ブラウザで https://[ip]:[port]/docsを開いて試してみてください。

出版

技術的な詳細は、ブログと原稿で見つけることができます。

巨大なAIを使用して5分でオンラインOPTサービスを構築

EnergonAI:10-100億パラメータトランスフォーマーモデルの推論システム

@misc{du2022energonai, 
      title={EnergonAI: An Inference System for 10-100 Billion Parameter Transformer Models}, 
      author={Jiangsu Du and Ziming Liu and Jiarui Fang and Shenggui Li and Yongbin Li and Yutong Lu and Yang You},
      year={2022},
      eprint={2209.02341},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

貢献

プロジェクトへのあなた自身の貢献に興味があるなら、ガイダンスのために貢献を参照してください。

本当にありがとう!