Slide 1

Slide 1 text

SageMakerが対応していないアルゴリズムの学習を ECRで行ってノーコードAIプラットフォームを作った 株式会社TechSword|CTO 宮本 大輝

Slide 2

Slide 2 text

@i7i5 もくじ 1. はじめに 2. 会社・サービス紹介 3. 利用サービス(コンテナ含む) 4. ハマったポイント 5. おわりに

Slide 3

Slide 3 text

Introduction はじめに

Slide 4

Slide 4 text

@i7i5 はじめに ▪SageMakerとECRを使って独自アルゴリズムを学習 ▪Greengrassを使ってエッジデバイスにデプロイ

Slide 5

Slide 5 text

Our Company & Service 会社・サービス紹介

Slide 6

Slide 6 text

@i7i5 自己紹介 宮本 大輝 みやもと たいき ▪ 株式会社TechSword 取締役CTO ▪ 岡山大学大学院自然科学研究科M1 休学中 ▪ 楕円曲線暗号に関する研究 ▪ ssh-keygen –t ed25519のやつ ▪ 好きなAWSサービス ▪ Amplify ▪ IoT Greengrass ▪ SageMaker

Slide 7

Slide 7 text

名称 株式会社TechSword 住所 〒700-8530 岡山県岡山市北区 津島中3丁目1番1号 会社概要 事業内容 ▪ ノーコードエッジAIプラットフォームの開発・運営・提供 ▪ AIの開発・導入・運用支援 設立 2021年5月19日 代表者 長島慶樹 @i7i5

Slide 8

Slide 8 text

VISION すべての人に、AIを。

Slide 9

Slide 9 text

MISSION AI技術を民主化し 最適化された未来社会を実現する

Slide 10

Slide 10 text

@i7i5 解決する課題 AI人材の供給不足 出典: 経済産業省『IT人材需給に関する調査』 AI人材需給ギャップの見通し 101.8 105.9 111.0 113.3 +3.4万人 +4.4万人 +8.8万人 +12.4万人 95.0 100.0 105.0 110.0 115.0 120.0 125.0 130.0 2018年 2020年 2025年 2030年 人数 [万人] 供給 需要 0 AI外注コストの相場 AI開発のコストの高さ 内容 費用相場 コンサルティング 40-200 万円 AI化可能性チェック 40-100 万円 プロトタイプ作成 100-数百 万円 AIモデル開発 月額 80-250 万円×人月 システム開発 月額 60-200 万円×人月

Slide 11

Slide 11 text

@i7i5 ノーコードエッジAIプラットフォーム TechSword Platform ▪ 知識0・スキル0でもAIの開発が可能 ▪ 容易にビジネス実装が可能 ▪ 安価な導入コスト

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

競合優位性 AI エッジデバイスへの AI実装技術 ワンクリックでのインストールを実現! (特許申請中)

Slide 14

Slide 14 text

AWS Services 利用サービス(コンテナ含む)

Slide 15

Slide 15 text

@i7i5 アーキテクチャ

Slide 16

Slide 16 text

@i7i5 SageMaker

Slide 17

Slide 17 text

@i7i5 SageMaker ▪組み込みアルゴリズム ▪ ResNet-50 ▪ VGG-16 ▪問題点 ▪ モデルの形式がMXNet(使い慣れない) ▪ もっと層を深くして精度を上げたい(深くすればするほど良いわけではないが)

Slide 18

Slide 18 text

@i7i5 ほかにも… ▪要件 ▪ 事前にクラウド側でONNX変換しておきたい ▪ エッジデプロイ後にTensorRT変換するため ▪ Notebookではなく、APIベースで実行したい ▪ ユーザーが少ない間は利用料に応じた従量課金がよい ▪ インスタンスをずっと保持しておくのはコストに API

Slide 19

Slide 19 text

@i7i5 そこで Elastic Container Registry (ECR) SageMaker Training Job

Slide 20

Slide 20 text

@i7i5 サービス Elastic Container Registry (ECR) SageMaker Training Job フルマネージド Docker コンテナレジストリ 独自のカスタムアルゴリズムやAWS Marketplaceの アルゴリズムを使ったトレーニング

Slide 21

Slide 21 text

@i7i5 全体像 https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/how-it-works-training.html より(一部切り取り)

Slide 22

Slide 22 text

@i7i5 コンテナの作成 ▪Dockerfile ▪ ENTRYPOINTに 学習開始コマンドを記述 FROM nvidia/cuda:11.3.1-cudnn8-devel RUN apt update && apt install -y … COPY darknet/ /opt/darknet/ WORKDIR /opt/darknet RUN sed -i ¥ -e 's/GPU=./GPU=1/'¥ -e 's/CUDNN=./CUDNN=1/' ¥ -e 's/CUDNN_HALF=./CUDNN_HAL=1/' ¥ -e 's/OPENCV=./OPENCV=1/'¥ Makefile ¥ && make -j$(nproc) RUN mkdir -p /opt/darknet/weights ¥ WORKDIR /opt/darknet/weights ¥ RUN wget https://github.com/AlexeyAB/darknet/releases/download/darknet _yolo_v3_optimal/yolov4.conv.137 COPY main.py /opt/darknet/ COPY yolo_to_onnx.py /opt/darknet/ WORKDIR /opt/darknet ENTRYPOINT ["python3.6", "main.py"]

Slide 23

Slide 23 text

@i7i5 コンテナをECRにプッシュ $ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 550000000000.dkr.ecr.ap-northeast-1.amazonaws.com $ docker build -t yolov4 . $ docker tag yolov4 550000000000.dkr.ecr.ap-northeast-1.amazonaws.com/yolov4:latest $ docker push 550000000000.dkr.ecr.ap-northeast-1.amazonaws.com/yolov4:latest

Slide 24

Slide 24 text

@i7i5 実行 ▪boto3 sm = boto3.client("sagemaker") sm.create_training_job( TrainingJobName=job_name, HyperParameters={"data_file": data_file, "cfg_file": cfg_file}, AlgorithmSpecification={"TrainingImage": repository_uri, "TrainingInputMode": "File"}, RoleArn=role, InputDataConfig=[ { "ChannelName": "train", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": input_data, "S3DataDistributionType": "FullyReplicated", }, }, "InputMode": "File", } ], OutputDataConfig={"S3OutputPath": output_path}, ResourceConfig={ "InstanceType": "ml.g4dn.8xlarge", "InstanceCount": 1, "VolumeSizeInGB": 10, }, StoppingCondition={ "MaxRuntimeInSeconds": 60 * 60 * 120, }, )

Slide 25

Slide 25 text

@i7i5 アーキテクチャ

Slide 26

Slide 26 text

@i7i5 ちなみに エッジデバイスへのデプロイは SageMaker Edge Managerを使わないのか? ▪コンパイルジョブ(SageMaker Neo)が上手くいかない… ▪TensorRTの方がエッジでの推論が早い ▪ コンパイルジョブなしにEdge Managerを使えるようになってほしい

Slide 27

Slide 27 text

Stucked Point ハマったポイント

Slide 28

Slide 28 text

@i7i5 ディレクトリ構成が特殊 ▪ /opt/mlで始まるディレクトリに データやconfigファイルを適切に配置 ▪わかりやすい記事👀 ▪ https://zenn.dev/kazuhito/books/4bfc 0e4e39752c/viewer/56709b opt └── ml ├── input │ ├── config │ │ ├── hyperparameters.json │ │ ├── inputdataconfig.json │ │ └── resourceconfig.json │ └── data │ └── train │ └── ├── model └── output

Slide 29

Slide 29 text

Conclusion おわりに

Slide 30

Slide 30 text

@i7i5 まとめ ▪SageMaker+ECRで独自アルゴリズムの学習 ▪ 使った分だけ課金 ▪ API実行 ▪ディレクトリ構成には注意

Slide 31

Slide 31 text

@i7i5 今後の展開 ▪エッジデバイス周りのコンテナ化 ▪ GreengrassとECRの組み合わせによる メンテナンス性向上 ▪SageMaker Distributed Training ▪ モデルのトレーニング時間の短縮

Slide 32

Slide 32 text

@i7i5 宣伝ちょっとだけ JOIN US! ▪ フロント・機械学習・サーバーサイド・組み込み エンジニア🧑‍💻 ▪ 創業初期メンバー ▪ 業務委託からなども歓迎💻 ▪ Meetyでカジュアル面談募集中🙌 @i7i5