Amazon SageMakerを試すための文章分類APIです
. ├── Dockerfile ├── src │ └── app.py └── test_boto3.py
- Dockerfile:実行環境
- src/app.py:API本体
- test_boto3.py:エンドポイントを叩くテストプログラム
Python 3.8.15
conda 22.9.0
セットアップコマンド
$ conda create -n st python=3.8.15
$ git clone https://github.com/akh1r0ck/sagemaker_challenge.git
$ cd sagemaker_challenge
$ pip install -r requirements.txt
ライブラリの個別インストール
$ pip install torch --extra-index-url https://download.pytorch.org/whl/cpu
$ pip install simpletransformers
$ pip install scipy
$ pip install fastapi uvicorn pydantic
$ pip install boto3
主要なライブラリはこの通りです.
Library | Version |
---|---|
Core | - |
torch | 1.13.0 |
simpletransformers | 0.63.9 |
scipy | 1.9.3 |
API | - |
fastapi | 0.87.0 |
uvicorn | 0.20.0 |
pydantic | 1.10.2 |
AWS | - |
boto3 | 1.26.16 |
※Coreの3つとAPIの3つはAPIのローカルデバッグ用です.APIのローカルデバッグをしない場合はboto3だけインストールすれば問題ありません.
ざっくり処理内容はこの通りです.
- terminalでAWSのアカウントを設定
- DockerImageをECR※にプッシュ
- SageMakerでエンドポイント作成
- ローカルで呼び出す
※ECR:Elastic Container Registry
- アカウントアイコン > セキュリティ認証情報(IAM) > アクセスキー > 新しいアクセスキーの作成
- AWS CLI > AWS Access Key IDとAWS Secret Access Key
- ECR > リポジトリ > リポジトリを作成
- ECR > リポジトリ > リポジトリを選択 > プッシュコマンドの表示
- SageMaker > 推論 > モデル > モデルの作成
- モデル名:適当に入力
- IAMロール:新しいロールの作成 > デフォルト設定のまま,ロールを作成を選択
- コンテナ入力オプション:モデルアーティファクトと推論イメージの場所を指定します。を選択(デフォルト)
- モデルアーティファクトと推論イメージの場所を指定します。:単一のモデルを使用するを選択(デフォルト)
- 推論コードイメージの場所:ECRのURIを入力
- SageMaker > 推論 > エンドポイント設定 > エンドポイント設定の作成
-
エンドポイント設定名:適当に入力
-
エンドポイントのタイプ:サーバーレスを選択
-
モデルの追加:作成したモデルを選択
-
本番稼働用バリアントの設定がデフォルトだと動かないので アクション > 編集 で変更
parameter default changed maximum メモリサイズ 1 3 6 最大同時実行数 20 1 20 デフォルトはそれぞれ1,20で今回は3,1に設定します.最大は6,20になっています.
-
- SageMaker > 推論 > エンドポイント > エンドポイントの作成
- エンドポイント名:適当に入力
- エンドポイント設定のアタッチ
- 既存のエンドポイント設定の使用(デフォルト)
- エンドポイント設定:作成したエンドポイント設定をラジオボタンで選択
- エンドポイント設定の選択を押す
- 新しいエンドポイント設定の作成:前述のエンドポイント設定の作成の手順で作成
- 既存のエンドポイント設定の使用(デフォルト)
- test_boto3.py > 作成したエンドポイントを呼び出すように書き換え
endpoint_name = "eeeendpoint”
を作成したエンドポイントの名前に変える - test_boto3.pyを実行