Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

2022年3月18日開催「AWS Startup Tech Meetup Online #11」の登壇資料です。
https://aws-startup-community.connpass.com/event/237573/

Aafd6fce3e7b34b8a41efb0d4d609cc1?s=128

tsmiyamoto

March 08, 2022
Tweet

More Decks by tsmiyamoto

Other Decks in Programming

Transcript

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

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

    5. おわりに
  3. Introduction はじめに

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

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

  6. @i7i5 自己紹介 宮本 大輝 みやもと たいき ▪ 株式会社TechSword 取締役CTO ▪

    岡山大学大学院自然科学研究科M1 休学中 ▪ 楕円曲線暗号に関する研究 ▪ ssh-keygen –t ed25519のやつ ▪ 好きなAWSサービス ▪ Amplify ▪ IoT Greengrass ▪ SageMaker
  7. 名称 株式会社TechSword 住所 〒700-8530 岡山県岡山市北区 津島中3丁目1番1号 会社概要 事業内容 ▪ ノーコードエッジAIプラットフォームの開発・運営・提供

    ▪ AIの開発・導入・運用支援 設立 2021年5月19日 代表者 長島慶樹 @i7i5
  8. VISION すべての人に、AIを。

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

  10. @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 万円×人月
  11. @i7i5 ノーコードエッジAIプラットフォーム TechSword Platform ▪ 知識0・スキル0でもAIの開発が可能 ▪ 容易にビジネス実装が可能 ▪ 安価な導入コスト

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

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

  15. @i7i5 アーキテクチャ

  16. @i7i5 SageMaker

  17. @i7i5 SageMaker ▪組み込みアルゴリズム ▪ ResNet-50 ▪ VGG-16 ▪問題点 ▪ モデルの形式がMXNet(使い慣れない)

    ▪ もっと層を深くして精度を上げたい(深くすればするほど良いわけではないが)
  18. @i7i5 ほかにも… ▪要件 ▪ 事前にクラウド側でONNX変換しておきたい ▪ エッジデプロイ後にTensorRT変換するため ▪ Notebookではなく、APIベースで実行したい ▪

    ユーザーが少ない間は利用料に応じた従量課金がよい ▪ インスタンスをずっと保持しておくのはコストに API
  19. @i7i5 そこで Elastic Container Registry (ECR) SageMaker Training Job

  20. @i7i5 サービス Elastic Container Registry (ECR) SageMaker Training Job フルマネージド

    Docker コンテナレジストリ 独自のカスタムアルゴリズムやAWS Marketplaceの アルゴリズムを使ったトレーニング
  21. @i7i5 全体像 https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/how-it-works-training.html より(一部切り取り)

  22. @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"]
  23. @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
  24. @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, }, )
  25. @i7i5 アーキテクチャ

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

    コンパイルジョブなしにEdge Managerを使えるようになってほしい
  27. Stucked Point ハマったポイント

  28. @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 │ └── <input data> ├── model └── output
  29. Conclusion おわりに

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

  31. @i7i5 今後の展開 ▪エッジデバイス周りのコンテナ化 ▪ GreengrassとECRの組み合わせによる メンテナンス性向上 ▪SageMaker Distributed Training ▪

    モデルのトレーニング時間の短縮
  32. @i7i5 宣伝ちょっとだけ JOIN US! ▪ フロント・機械学習・サーバーサイド・組み込み エンジニア🧑‍💻 ▪ 創業初期メンバー ▪

    業務委託からなども歓迎💻 ▪ Meetyでカジュアル面談募集中🙌 @i7i5