Git Product home page Git Product logo

aws-samples / aws-ml-jp Goto Github PK

View Code? Open in Web Editor NEW
141.0 11.0 43.0 91.1 MB

SageMakerで機械学習モデルを構築、学習、デプロイする方法が学べるNotebookと教材集

License: MIT No Attribution

Python 6.88% Jupyter Notebook 91.22% Shell 0.14% Dockerfile 0.04% C 0.23% HTML 0.17% JavaScript 0.05% TypeScript 0.43% HCL 0.67% Batchfile 0.01% Cuda 0.12% C++ 0.03%
aws data-science deep-learning jupyter-notebook machine-learning mlops sagemaker

aws-ml-jp's Introduction

AWS ML JP

AWS で機械学習をはじめる方法を学ぶことができるリポジトリです。

📚 リポジトリの構成

  • ai-services
    • AWS の AI サービスの使い方を学ぶためのコンテンツ。
  • sagemaker
    • 機械学習モデルの開発効率化やパイプライン化を検討している方が、 Amazon SageMaker をどう使えば実現できるか学ぶためのコンテンツ。
  • frameworks
    • すでに TensorFlow や PyTorch で開発している方が、モデルを SageMaker 上で学習、推論させるための移行方法を学ぶためのコンテンツ。
    • aws-neuron AWSが設計した機械学習アクセラレーター AWS Trainium、AWS Inferentia を活用する方法を学ぶためのコンテンツ。
  • tasks
    • 画像のセグメンテーションや物体検知、自然言語処理のQAや要約など、個別具体的なタスクを SageMaker でどのように解けるか学ぶためのコンテンツ。
  • solutions
    • 製造業での異常検知モニタリングやコールセンターの問合せ分析など、特定の業務プロセスを効率化/差別化したい方が、 SageMaker と他のサービスを組み合わせどのようにソリューションを構築できるか学ぶためのコンテンツ。

🍔 AWSの機械学習サービス

AWS の機械学習サービスは AI ServicesML ServicesML Frameworks/Infrastructure の 3 層構成になっています。リポジトリの構成はサービスの構成を踏襲しています。

AWS ML Service Overview

  • AI Services
  • ML Servies
    • データサイエンティストの方が機械学習モデルを開発する時、前処理、計算資源の調達、学習結果の管理やモデルのデプロイなど面倒な作業を代行するとともにスケールしやすくするサービスです。
    • Amazon SageMaker は機械学習モデル開発を行うための統合開発環境で、 JupyterLab をベースにした環境からデータの前処理、学習、デプロイなどに必要なサービスを簡単に呼び出せます(三菱 UFJ 様の事例Denso 様の事例SyntheticGestalt(創薬)、)。
    • Amazon SageMaker Studio Lab は無料で利用できるエントリー版ですが、 GPU やストレージなど機械学習の学びから価値検証に十分なスペックを備えています。
    • Amazon SageMaker Canvas は機械学習の専門知識がない業務部門の方でも表計算ソフトの延長線の感覚で機械学習モデルの構築と予測が行えるサービスです。
  • ML Frameworks/Infrastructure
    • データサイエンティストの方が機械学習モデルを開発する時、利用したい機械学習フレームワークやデバイスに合わせた環境をセットアップしやすくするサービスです。
    • AWS Deep Learning Containers は各種フレームワークごとに最適化されたコンテナイメージで学習・推論が高速化されます。
    • AWS Inferentia は推論 (MoneyForward 様の事例 )、 AWS Trainium は学習にそれぞれ特化したチップで、高スループットかつ高コスト効率な推論、学習を可能にします。

✏️ 学習の準備

本リポジトリのコンテンツは主に Jupyter Notebook で作成されています。コンテンツを動かすため、次の準備をしておいてください。セットアップの詳細は、コンテンツ本体の記載も参照してください。

🎥 学習コンテンツ

AI Service

Amazon SageMaker

AI/ML の BlackBelt シリーズである AI/ML DarkPart で SageMaker の使い方を解説しています! そもそも機械学習のプロジェクトはどうやって始めればいいのかに疑問をお持ちの方は、 AI/ML LightPart の動画や ML Enablement Workshop の資料をご参考ください。

No Process Title Content Video
1 Train Amazon SageMaker Training で機械学習のモデル開発を楽にする - YouTube
2 Train Amazon SageMaker Training ハンズオン編 Jupyter Notebook YouTube
3 Train Amazon SageMaker による実験管理 Jupyter Notebook YouTube
4 Deploy Amazon SageMaker 推論 Part1 推論の頻出課題とSageMakerによる解決方法 - YouTube
5 Deploy Amazon SageMaker 推論 Part2すぐにプロダクション利用できる!モデルをデプロイして推論する方法 Jupyter Notebook YouTube
6 Deploy Amazon SageMaker 推論 Part3(前編)もう悩まない!機械学習モデルのデプロイパターンと戦略 - YouTube
7 Deploy Amazon SageMaker 推論 Part3(後編)もう悩まない!機械学習モデルのデプロイパターンと戦略 - YouTube
8 Monitor Amazon SageMaker モニタリング Part1 - YouTube
9 Monitor Amazon SageMaker モニタリング Part2 Jupyter Notebook YouTube
10 Monitor Amazon SageMaker モニタリング Part3 Jupyter Notebook YouTube

Amazon SageMakerの概要 では Amazon SageMaker の全体像と動画で解説しているコードも含めたコンテンツの詳細を確認できます。

📝 実践コンテンツ

AWS で機械学習を実践する時の参考となるサンプルコードなどを紹介します。

※本サンプルコードは MIT-0 で公開していますが、サンプルコードで使用されるモデルやデータセットはそれぞれライセンスが付与されています。サンプルコードを参考に独自の実装をする場合、用途がモデルやデータセットのライセンスに違反しないか別途確認してください。

Amazon SageMaker

Amazon SageMaker で機械学習の構築、学習、デプロイをスケールする。

📯 MLOps

🚚 ML Frameworks

機械学習フレームワークの実装を SageMaker へ移行する。

Tasks

AWS で画像処理や自然言語処理などの機械学習のタスクを解く方法を解説します。

👁 画像処理

💬 自然言語処理

🔈 音声処理

📄 テーブルデータ

🤖 生成系 AI

text-to-image
サンプルコード 詳細
Stable Diffusion Web UI Stable Diffusion の GUI として人気の AUTOMATIC1111/stable-diffusion-webui を EC2 インスタンスに立てて利用できるようにする CloudFormation です。モデルのトレーニングに bmaltais/kohya_ss、GUI ベースのファイル操作に filebrowser/filebrowser を立ち上げる構成も含まれています。SageMaker JumpStart を利用した Fine Tuning については たった数枚の画像で Stable Diffusion をファインチューニングできる効率的な Amazon SageMaker JumpStart の使い方 をご参照ください。
Inpainting 画像の一部を生成した画像で差し替えるサンプルです。差し替える箇所 ( マスク ) の作成には CLIPSeg を使用しています。詳細は Stable Diffusion で画像の部分的な差し替えを行う環境を、 Amazon SageMaker JumpStart で簡単に構築する をご参照ください。

text-to-text

サンプルコード 詳細
Instruction Tuning text-to-text の基盤モデルである StableLMOpenCALM をインストラクションチューニングする方法を解説します。対応しているモデルとサンプルコードはフォルダ内の README.md を参照してください。 OpenCALM については 日本語大規模言語モデル OpenCALM の知識でクイズ王に挑戦する をご参考ください。
LangChain Inference LangChain から SageMaker でホスティングした text-to-text の基盤モデルを扱うサンプルです。

Solutions

SageMaker と他のサービスを組み合わせ、業務プロセスの効率化や差別化を行うためのソリューションを格納/紹介します。

  • JP RAG SOLUTION
  • コールセンターのリアルタイム会話分析
    • コールセンターで会話の文字起こし、翻訳、感情分析、会話内容の要約、オペレーターへのアドバイスをリアルタイムで行うソリューションです。文字起こしは Amazon Transcribe 、翻訳は Amazon Translate 、 感情分析は Amazon Comprehend 、 要約は Amazon SageMaker 、 アドバイスは Amazon LexAmazon Kendra で実装しています。
  • Simple Lex Kendra JP
    • 情報システム部門のヘルプデスクへの問い合わせ件数を削減するため、問い合わせを受け付けるチャットボットを設置するソリューションです。社内文書の検索を行う Amazon Kendra と問い合わせを受け付けるチャットボットの Amazon Lex v2 を組み合わせて実装しています。 AWS CDK で構成されているため、シンプルにデプロイ可能です。
    • SBI 生命様のコールセンターでの導入事例
  • レビューコメント分析ダッシュボード
    • 自然言語処理でレビューを分析した結果を Amazon Quicksight でダッシュボードとして表示するソリューションです。オープンソースの形態素解析ツールである GiNZA を用いて時系列のレビュー数に加え頻出単語・係り受け関係を参照できます。ブログ記事では、評価の低い DVD に対し 「まだ」「届く」の発生が多いことから発送遅延が原因ではないかといった分析例を示しています。

Contribution

本リポジトリへの Contribution を歓迎します! Contribution の方法は CONTRIBUTING をご参照ください。

License

This library is licensed under the MIT-0 License. See the LICENSE file.

aws-ml-jp's People

Contributors

amazon-auto avatar awshtokoyo avatar dependabot[bot] avatar harusametime avatar hitsuji1991 avatar icoxfog417 avatar kazuhitogo avatar kmotohas avatar maekawataiki avatar morisy575 avatar mshin20220124 avatar ohbuchim avatar pomcho555 avatar shingochiyoda avatar upura avatar wildgeece96 avatar ysekiy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aws-ml-jp's Issues

SageMaker Local Mode does not work on AL2

https://github.com/aws-samples/aws-ml-jp/blob/main/sagemaker/hpo-pytorch-mnist/pytorch_mnist.ipynb

Creating 9ajrhyi7nk-algo-1-1nstb ... 
Creating 9ajrhyi7nk-algo-1-1nstb ... done
Attaching to 9ajrhyi7nk-algo-1-1nstb
9ajrhyi7nk-algo-1-1nstb | 2022-10-30 14:27:21,859 sagemaker-training-toolkit INFO     Imported framework sagemaker_pytorch_container.training
9ajrhyi7nk-algo-1-1nstb | 2022-10-30 14:27:21,863 sagemaker-training-toolkit INFO     No GPUs detected (normal if no gpus installed)
9ajrhyi7nk-algo-1-1nstb | 2022-10-30 14:27:21,872 sagemaker_pytorch_container.training INFO     Block until all host DNS lookups succeed.
9ajrhyi7nk-algo-1-1nstb | 2022-10-30 14:27:21,875 sagemaker_pytorch_container.training INFO     Invoking user training script.
9ajrhyi7nk-algo-1-1nstb | 2022-10-30 14:27:22,009 sagemaker-training-toolkit ERROR    Reporting training FAILURE
9ajrhyi7nk-algo-1-1nstb | 2022-10-30 14:27:22,009 sagemaker-training-toolkit ERROR    framework error: 
9ajrhyi7nk-algo-1-1nstb | Traceback (most recent call last):
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/sagemaker_training/trainer.py", line 85, in train
9ajrhyi7nk-algo-1-1nstb |     entrypoint()
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/sagemaker_pytorch_container/training.py", line 121, in main
9ajrhyi7nk-algo-1-1nstb |     train(environment.Environment())
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/sagemaker_pytorch_container/training.py", line 73, in train
9ajrhyi7nk-algo-1-1nstb |     runner_type=runner_type)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/sagemaker_training/entry_point.py", line 92, in run
9ajrhyi7nk-algo-1-1nstb |     files.download_and_extract(uri=uri, path=environment.code_dir)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/sagemaker_training/files.py", line 131, in download_and_extract
9ajrhyi7nk-algo-1-1nstb |     s3_download(uri, dst)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/sagemaker_training/files.py", line 167, in s3_download
9ajrhyi7nk-algo-1-1nstb |     s3.Bucket(bucket).download_file(key, dst)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/boto3/s3/inject.py", line 247, in bucket_download_file
9ajrhyi7nk-algo-1-1nstb |     ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/boto3/s3/inject.py", line 173, in download_file
9ajrhyi7nk-algo-1-1nstb |     extra_args=ExtraArgs, callback=Callback)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/boto3/s3/transfer.py", line 315, in download_file
9ajrhyi7nk-algo-1-1nstb |     future.result()
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/s3transfer/futures.py", line 106, in result
9ajrhyi7nk-algo-1-1nstb |     return self._coordinator.result()
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/s3transfer/futures.py", line 265, in result
9ajrhyi7nk-algo-1-1nstb |     raise self._exception
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/s3transfer/tasks.py", line 255, in _main
9ajrhyi7nk-algo-1-1nstb |     self._submit(transfer_future=transfer_future, **kwargs)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/s3transfer/download.py", line 343, in _submit
9ajrhyi7nk-algo-1-1nstb |     **transfer_future.meta.call_args.extra_args
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/botocore/client.py", line 391, in _api_call
9ajrhyi7nk-algo-1-1nstb |     return self._make_api_call(operation_name, kwargs)
9ajrhyi7nk-algo-1-1nstb |   File "/opt/conda/lib/python3.6/site-packages/botocore/client.py", line 719, in _make_api_call
9ajrhyi7nk-algo-1-1nstb |     raise error_class(parsed_response, operation_name)
9ajrhyi7nk-algo-1-1nstb | botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
9ajrhyi7nk-algo-1-1nstb | 
9ajrhyi7nk-algo-1-1nstb | An error occurred (403) when calling the HeadObject operation: Forbidden
9ajrhyi7nk-algo-1-1nstb exited with code 1
1
Aborting on container exit...
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/local/image.py in train(self, input_data_config, output_data_config, hyperparameters, environment, job_name)
    247         try:
--> 248             _stream_output(process)
    249         except RuntimeError as e:

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/local/image.py in _stream_output(process)
    915     if exit_code != 0:
--> 916         raise RuntimeError("Process exited with code: %s" % exit_code)
    917 

RuntimeError: Process exited with code: 1

During handling of the above exception, another exception occurred:

RuntimeError                              Traceback (most recent call last)
/tmp/ipykernel_538/1942905621.py in <cell line: 1>()
----> 1 estimator.fit({'training': inputs})

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/workflow/pipeline_context.py in wrapper(*args, **kwargs)
    246             return self_instance.sagemaker_session.context
    247 
--> 248         return run_func(*args, **kwargs)
    249 
    250     return wrapper

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/estimator.py in fit(self, inputs, wait, logs, job_name, experiment_config)
   1100         self._prepare_for_training(job_name=job_name)
   1101 
-> 1102         self.latest_training_job = _TrainingJob.start_new(self, inputs, experiment_config)
   1103         self.jobs.append(self.latest_training_job)
   1104         if wait:

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/estimator.py in start_new(cls, estimator, inputs, experiment_config)
   2002         train_args = cls._get_train_args(estimator, inputs, experiment_config)
   2003 
-> 2004         estimator.sagemaker_session.train(**train_args)
   2005 
   2006         return cls(estimator.sagemaker_session, estimator._current_job_name)

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/session.py in train(self, input_mode, input_config, role, job_name, output_config, resource_config, vpc_config, hyperparameters, stop_condition, tags, metric_definitions, enable_network_isolation, image_uri, algorithm_arn, encrypt_inter_container_traffic, use_spot_instances, checkpoint_s3_uri, checkpoint_local_path, experiment_config, debugger_rule_configs, debugger_hook_config, tensorboard_output_config, enable_sagemaker_metrics, profiler_rule_configs, profiler_config, environment, retry_strategy)
    611             self.sagemaker_client.create_training_job(**request)
    612 
--> 613         self._intercept_create_request(train_request, submit, self.train.__name__)
    614 
    615     def _get_train_request(  # noqa: C901

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/session.py in _intercept_create_request(self, request, create, func_name)
   4315             func_name (str): the name of the function needed intercepting
   4316         """
-> 4317         return create(request)
   4318 
   4319 

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/session.py in submit(request)
    609             LOGGER.info("Creating training-job with name: %s", job_name)
    610             LOGGER.debug("train request: %s", json.dumps(request, indent=4))
--> 611             self.sagemaker_client.create_training_job(**request)
    612 
    613         self._intercept_create_request(train_request, submit, self.train.__name__)

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/local/local_session.py in create_training_job(self, TrainingJobName, AlgorithmSpecification, OutputDataConfig, ResourceConfig, InputDataConfig, Environment, **kwargs)
    192         hyperparameters = kwargs["HyperParameters"] if "HyperParameters" in kwargs else {}
    193         logger.info("Starting training job")
--> 194         training_job.start(
    195             InputDataConfig, OutputDataConfig, hyperparameters, Environment, TrainingJobName
    196         )

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/local/entities.py in start(self, input_data_config, output_data_config, hyperparameters, environment, job_name)
    241         self.environment = environment
    242 
--> 243         self.model_artifacts = self.container.train(
    244             input_data_config, output_data_config, hyperparameters, environment, job_name
    245         )

~/anaconda3/envs/pytorch_p38/lib/python3.8/site-packages/sagemaker/local/image.py in train(self, input_data_config, output_data_config, hyperparameters, environment, job_name)
    251             # which contains the exit code and append the command line to it.
    252             msg = "Failed to run: %s, %s" % (compose_command, str(e))
--> 253             raise RuntimeError(msg)
    254         finally:
    255             artifacts = self.retrieve_artifacts(compose_data, output_data_config, job_name)

RuntimeError: Failed to run: ['docker-compose', '-f', '/tmp/tmpqxy0jzs6/docker-compose.yaml', 'up', '--build', '--abort-on-container-exit'], Process exited with code: 1

API を Prompt Tuning した場合と、OSS を Fine Tuning した場合とでどちらがコスト効率が良いのか検証できる実装を提供する

AWS で生成系 AI を使ったアプリケーションを開発する開発者として、想定しているユースケースに対し Amazon Bedrock のモデルを使い Prompt Tuning するのが良いのか、 OSS を Fine Tuning した方が良いのか、判断基準のポイントを知りたい。初手は実装が簡易な Amazon Bedrock がスムーズだが、ユーザーの実利用データが蓄積できより挙動を洗練させたい場合、どこまで Prompt Tuning / Few shot で進めどこから Fine Tuning に切り替えるか見通しが事前に把握できれば、切り替えポイントの見過ごしによる機会損失を最小化することができる。

[Content Improvement]README.mdの更新

Link to the notebook
README.mdの更新
https://github.com/aws-samples/aws-ml-jp/blob/main/README.md

What aspects of the notebook can be improved?

SageMakerの利用を検討している開発者として、SageMakerで学習したい、SageMakerでNotebookを書きたいといった意図がある際それに対応するaws-ml-jp内のsampleは、フォルダ名やNotebook名から類推して探索をする必要がある。意図とサンプルをつなげるインデックスのような情報があることで、開発者はすぐに必要なサンプルにたどり着けるようになる。

What are your suggestions?

aws-ml-jp内にあるsampleの内容を、用途別に整理してREADME.mdにまとめる。
(将来的には、ドキュメントサイト化できるとよい)

https://sagemaker-examples.readthedocs.io/en/latest/

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.