Amazon Web Services ブログ

Category: SageMaker

[AWS Black Belt Online Seminar] Amazon SageMaker Advanced Session 資料及び QA 公開

先日 (2018/3/13) 開催しました AWS Black Belt Online Seminar「Amazon SageMaker Advanced Session」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20190213 AWS Black Belt Online Seminar Amazon SageMaker Advanced Session from Amazon Web Services Japan AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. 自動ラベリング機能については、SageMakerのフレームワークに則る必要がありますか?(APIレベルで) A. 自動ラベリング機能は,Image classification,Object detection,Text classificationの3つのビルトインアルゴリズムについて,EC2上で学習とバッチ推論APIとしてお使いいただくことができます. https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/sms-automated-labeling.html Q. Marketplaceでは推論モデルのバージョンアップのタイミングで精度が変化することもあると思いますが、次のバージョンがリリースされる前に試用期間を設けてもらうことは可能でしょうか? A. 出品者のお客様のほうで出品内容については管理されており,AWS側からそう言った制限を設けることは現状できかねます. Q. そのアルゴリズムなどに対する問い合わせは通常のサポート窓口経由ですか? A. サポートにご契約いただいているお客様は,サポートにお問い合わせいただくことができます. Q. DeepRacerって国内でも使えるんですか? A. 日本国内発売開始後,ご利用いただけます. Q. 学習したモデルをデプロイするのではなく、modelファイルとして出力して、別環境にデプロイすることはできますか? A. 学習済みのモデルとその時に使ったスクリプトや・パラメータは全てS3に保存されますので,そこから直接取り出して別環境にデプロイいただけます. https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html 今後の AWS Webinar スケジュール 直近で以下のオンラインセミナーを予定しています。各オンラインセミナーの詳細およびお申し込み先は下記URLからご確認いただけます。皆様のご参加をお待ちしております! AWSOME DAY ONLINE CONFERENCE […]

Read More

Amazon SageMaker スクリプトモードでの TensorFlow Eager Execution の使用

 このブログ記事では、TensorFlow の Eager Execution モードでモデルを訓練するために Amazon SageMaker のスクリプトモードを使用する方法について説明します。Eager Execution は TensorFlow の未来であり、現在最新の TensorFlow 1.x バージョンでオプションとして利用可能ではあるものの、TensorFlow 2 ではデフォルトモードになる予定です。今回は、スクリプトモードと Eager Execution について簡単に説明してから、代表的な回帰タスクシナリオをご紹介します。次に、スクリプトモードと Eager Execution を併用して、このタスクを解決するワークフローについて説明します。このブログ記事のためのノートブックと関連コードは GitHub から入手することができます。それでは、スクリプトモードから見ていきましょう。 Amazon SageMaker のスクリプトモード Amazon SageMaker は、TensorFlow などの人気の高い機械学習 (ML) および深層学習フレームワークの一部を使ったモデルの訓練とデプロイメントを容易にする API と事前構築されたコンテナを提供します。Amazon SageMaker は、コンテナの構築や基盤となるインフラストラクチャの管理について心配することなく、カスタム TensorFlow コードを使用したモデルを訓練してデプロイするために使用できます。Amazon SageMaker の Python SDK TensorFlow Estimator、および Amazon SageMaker のオープンソース TensorFlow コンテナは、TensorFlow スクリプトを記述して、それを Amazon SageMaker […]

Read More

【開催報告】第2回 Amazon SageMaker 事例祭り

アマゾン ウェブ サービス ジャパン株式会社 (AWS) ソリューションアーキテクトの針原佳貴です。 AWS では、Amazon SageMaker のハンズオンとお客様の登壇による事例紹介を合わせたイベント「Amazon SageMaker 事例祭り」を毎月開催しています。2018年2月12日に目黒オフィスで第2回 Amzon SageMaker 事例祭りが開催され150名ほどの方にご参加頂いたので、以下でその概要についてお伝えします。今回の Amazon SageMaker 事例祭りは Chainer x AWS というテーマで、セミナーと事例発表の二部構成で開催されました。   セミナー 「Chainer v5 とこれから ~学習と推論の最新機能~」株式会社Preferred Networks リサーチャー 得居誠也 様 [slides] Chainer は Python で実装された Define by Run の深層学習フレームワークで、NumPy のような既存の Python ライブラリをそのまま使い、直感的な API によるモデルの記述ができます。本発表ではまずこれらの設計思想と API の解説を改めて Chainer のリード開発者である 株式会社Preferred Networks 得居様からお話し頂きました。また、大規模データに対するトレーニングの際に求められる Serializers によるパラメータのファイル出力や、ONNX-Chainer, […]

Read More

Amazon SageMaker で複数の TensorFlow モデルを一つのエンドポイントへデプロイする方法

概要 Amazon SageMaker では、TensorFlow、MXNet、Chainer、PyTorch、scikit-learn といった機械学習フレームワークをサポートしています。これらのフレームワークを利用して機械学習による予測結果を得るためには、学習した機械学習モデルをエンドポイントにデプロイする必要があります。複数のモデルを利用したい場合、モデル一つ一つに対してエンドポイントを作成する方法が一般的ですが、推論リクエストが少ないモデルに対してエンドポイントを常時起動すると、推論処理に対するコストが高くなってしまいます。そこで、推論リクエストの少ないモデルを、他のモデルと同じエンドポイントにデプロイし、常時起動するインスタンス数を低減する方法があります。この手法はリアルタイム処理が必要な場合は特に有効です。なお、推論処理がリアルタイム性を要求しない場合はバッチ変換ジョブをご利用ください。 本記事では、複数のモデルを一つのエンドポイントにデプロイする方法について説明いたします。Amazon SageMaker がサポートする全ての機械学習フレームワークで、複数のモデルを一つのエンドポイントにデプロイすることができますが、ここでは Tensorflow Serving を利用して、複数のモデルをデプロイする方法について説明します。例として、軽量な物体検出モデル SSD MobileNet と、軽量な画像分類モデル MobileNet を1つのインスタンスにデプロイします。デプロイまでの手順の概要は以下のとおりです。 複数の TensorFlow モデルを TensorFlow Serving にデプロイ可能な SavedModel 形式で保存します。 保存したモデルを1つのアーカイブファイル (tar.gz 形式) にして、Amazon S3 (S3) にアップロードします。 Amazon SageMaker の API を利用して、1 つのインスタンスにデプロイし、テストします。 それでは各手順について以下で説明します。 1. TensorFlow モデルの保存 Jupyter Notebook からコードを実行し、TensorFlow の学習済みモデルをダウンロードして、以下のような SavedModel 形式で保存します。model1 を SSD MobileNet、model2 を MobileNet とします。TensorFlow モデルには、SavedModel 形式以外の学習済みモデルが公開されている場合があるので、必要に応じて変換します。今回は […]

Read More

Amazon SageMaker Ground Truth と自動化されたデータのラベル付けによる低コストでのデータのアノテーション

  Amazon SageMaker Ground Truth を使うと、正確にラベル付けされた機械学習データセットを簡単に低価格で構築することができます。ラベル付けのコストを削減するために、Ground Truth の機械学習を使用して、人によるアノテーションが必要な「困難な」画像と、機械学習で自動的にラベル付けできる「簡単な」画像を選択します。この記事では、自動化されたデータのラベル付けの仕組みと、その結果の評価方法について説明します。 自動化されたデータのラベル付けを伴う物体検出ジョブを実行する 以前のブログ記事では、Julien Simon が AWS マネジメントコンソールを使ってデータのラベル付けジョブを実行する方法を説明しました。このプロセスをより細かく制御するには、API を使用できます。  その方法をご紹介するため、今回は鳥の画像 1,000 個に対して バウンディングボックスアノテーション を生成する API を使用した Amazon SageMaker Jupyter ノートブックを使用します。 注意: デモノートブックの実行コストは約 200 USD です。 デモノートブックにアクセスするには、ml.m4.xlarge インスタンスタイプを使用して Amazon SageMaker ノートブックインスタンスを開始します。インスタンスは、このステップバイステップチュートリアルに従ってセットアップできます。ステップ 3 では、IAM ロールの作成時に「任意の S3 バケット」にチェックを入れるようにしてください。 以下にあるように、Jupyter ノートブックを開いて [SageMaker Examples] タブを選択し、object_detection_tutorial.ipynb を起動します。 ノートブックの「Introduction」および「Run a Ground Truth labeling job」の各セクションにあるセルのすべてを実行します。セルには変更が必要なものもあるため、ノートブックの指示を注意深く読んでください。これらのセクションを実行すると、以下が行われます。 鳥の画像 1,000 […]

Read More

DXC Technology が AWS の機械学習を使ってサポートチケットの選別を自動化

  DXC Technology は、さまざまな企業や政府機関向けに、デジタルトランスフォーメーション上でエンドツーエンドのサービスを提供している IT サービスの世界的大手企業です。同社は、オンプレミスとクラウドで、クライアントのサービス管理も行っています。  プロセスの過程でインシデントチケットが発生した場合は、サービスレベルアグリーメント (SLA) に沿ってすばやく解決する必要があります。  DXC は、人的作業を減らし、インシデントの解決時間を短縮し、知識管理を強化して、インシデント解決の一貫性を向上させることを目標に掲げています。  そして、この目標を念頭に、知識管理 (KM) 記事の予測メカニズムを開発しました。 今回のブログでは、DXC が、KM 記事を自動的に特定するために AWS で機械学習をどのように使用しているか、またそれをチケット解決用のオーケストレーションランブックで自動化し、IT サポートの効率をいかに向上できるかについてご紹介します。 AWS を活用した DXC のソリューション その 1: Amazon S3 にデータレイクを構築する DXC の顧客が、インシデントチケットを IT サービスマネジメントツール (ITSM) へ送ります。チケットは、ユーザーまたはマシンにより生成できます。データは、Amazon S3 のバケットへプッシュまたはプルされます。Amazon S3 は、高い耐久性で低価格のオブジェクトストレージであり、形式やフォーマットを問わずあらゆるデータを保存できます。 その 2: 最適な機械学習ツールとアルゴリズムを選択する 一般に、問題は、テキストをいかに分類するかということです。AWS は、テキストを分類するためのさまざまな選択肢を顧客に提供しています。DXC は、次の AWS サービスの評価を行いました。 BlazingText と呼ばれるアルゴリズム内蔵の Amazon SageMaker Amazon Comprehend のカスタム分類 最適な選択肢は、Amazon […]

Read More

[AWS Black Belt Online Seminar] Amazon SageMaker Basic Session 資料及び QA 公開

先日 (2019/2/6) 開催しました AWS Black Belt Online Seminar「Amazon SageMaker Basic Session」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20190206 AWS Black Belt Online Seminar Amazon SageMaker Basic Session from Amazon Web Services Japan AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. バッチ推論とは何ですか? A. バッチ推論とは、大量の推論対象データに対して、一括で推論処理を行うことを指します。Amazon SageMaker においては、推論用のインスタンスを立ち上げて、S3 から対象データを読み込んで推論を行い、結果を S3 に書き出す形で実現しています。 Q. SageMakerの各コンポーネントで、モデル変換とありましたが、このモデル変換後出てくるモデルの形式は何になりますでしょうか(例:Keras⇒Chainer等) A. モデル変換は、Neo-AI プロジェクトとして OSS で公開されておりますコンパイラによって実施されます。出力形式は、Neo の独自フォーマットとなり、Neo Runtime にて動作いたします。Neo-AI プロジェクトの詳細については、こちらのブロク記事も参照ください。 Q. SDKの基本コード3行目のchainer_estimator.fitはestimator.fitの間違いでしょうか?chainer_estimatorという変数が宣言されていないように思えます。 A. ご指摘の通りです。こちらの資料間違いでご迷惑をおかけして申し訳ありません。公開バージョンの資料では、こちらの間違いは修正いたしました。 Q. SageMakerのハイパーパラメータチューニングについて、通常のGridSearchやベイズ最適化をPythonで組んで実行するのと何か違いはありますか?例えばGridSearchの範囲を指定しなくても最適なものを選んでくれるとか。 A. SageMaker のハイパーパラメタチューニングは、ベイズ最適のみをサポートしています。通常の最適化ライブラリとの違いは、SageMaker […]

Read More

Amazon Rekognition に関する最近の研究論文および関連記事についての考察

昨日発表された研究論文と関連記事は、Amazon Rekognition の精度について触れています。私たちはフィードバックを歓迎しており、実際に常に人々からフィードバックを得ていますが、この研究論文と記事は誤解を招きやすく、誤った結論に導いています。このブログ記事が、いくつかの誤解や不正確さを明確にするのに役立つことを願っています。 多くの場合、精度は絶対的な尺度と考えられます。たとえば、数学の試験のパーセンテージスコアでは、それぞれの答えは正しいか、間違っているかのどちらかです。 機械学習システムの精度を理解、解釈、比較するには、何が予測されているか、予測の信頼性、どのように予測を使うべきかを理解することが重要であり、これを単一の絶対数またはスコアから収集することは不可能です 。 何が予測されているか: Amazon Rekognition は、コンピュータービジョンと呼ばれる一種の機械学習を使用して、2 つの異なる顔機能を提供します。最初の機能は顔分析です。特定の画像やビデオについて、このサービスは顔がどこに表示されているか、および画像の特定の特性 (画像に笑顔、めがね、口ひげ、顔の性別が含まれているかなど) を知らせることができます。こうした属性は通常、写真のカタログを検索するのに役立ちます。Amazon Rekognition の 2 番目の機能は、一般に顔認識と呼ばれている機能です。これは、顔分析とは明確に異なる機能であり、似ているように見える顔を照合します。これは、一部の電話のロックの解除、建物に入る人の認証、または対象となる人物を識別するために法執行機関がフィールドを絞り込むために使用するのと同じアプローチです。後者は、昔の映画に登場する写真の本をめくる探偵に似ていますが、はるかに高速です。 顔分析と顔面認識は、基盤となるテクノロジとそれらをトレーニングするために使用されるデータの点でまったく異なります。そうした目的を意図したアルゴリズムではないので、顔認識の精度を測定するために顔分析を使用することは軽率です (説明は、ドキュメントをご覧ください)。 信頼性: 顔分析と顔認識の両方について、Amazon Rekognition は、特定の結果がどの程度の信頼性であるかについても説明します。すべての機械学習システムは本質的に確率論的なので、信頼スコアはシステムがその結果にどれだけ信頼を置いているかの尺度と考えることができます。信頼度が高いほど、結果を信頼できます。結果を解釈するために使用される信頼度閾値について透明かつ思慮深くなければ、顔分析または顔認識のいずれかの品質を解釈することは不可能です。この調査で使用されている閾値はまだ分かっていませんが、以下に示すように、推奨される信頼水準で実行した場合の結果は大きく異なります。 予測のユースケース: 信頼性と組み合わせることで、精度を適切な文脈でとらえるのに役立つので、機械学習による予測の使用の意図は重要です。たとえば、写真のカタログで「サングラス」を含む画像を検索するために顔分析を使用する場合、完全に一致しないものが含まれるとしても、検索結果に表示する画像の数を増やすことが望ましい場合があります。このユースケースにおける不完全な結果のコストは低いので、より多い結果とそれらの結果のより少ない手作業による検査と引き換えに、より低い信頼レベルが受け入れられることが多くなります。ただし、捜査で関心のある人物を識別するために顔認識を使用する場合は、法執行機関は推奨されている 99% の信頼度閾値 (文書化されているとおり) を使用し、あくまでも捜査の 1 つの要素としてのみ使用することが必要です。 Amazon Rekognition の「テスト」についてどのように考えるかについての上記の文脈で、私たちはこの最新のレポートとその誤った主張にたどり着きました。 この研究論文は「商業的な顔認識製品のパフォーマンスの脆弱性をさらす」ことを目指していますが、実際には代わりに顔分析を使用しています。 上述したように、顔分析と顔認識は 2 つの別々のツールです。顔認識の場合と同じ方法で顔を照合するために顔分析を使用することはできません。これは単に意味や定義の問題ではありません。2つの異なる目的を持つ 2 つの異なる機能なのです。顔分析では、主に画像のフィルタ処理や整理に役立つ一般的な特徴 (髪の毛、笑顔、眉をひそめる、性別など) しか見つけることができません。顔を一意に特定する知識は持ちません (これを画像からリバースエンジニアリングすることはできません)。対照的に、顔認識は、顔を照合するための顔の一意な特徴に焦点を合わせており、顧客が持ち込むデータセット内の顔と照合するために使用されます。顔認識を行うために顔分析を使用することは、一意の個人を識別するには不正確で推奨されない方法です。  これについてはドキュメントで説明していますが、この問題について混乱している顧客からの報告は受けていません。 その研究論文は、Amazon Rekognition が低品質の顔分析結果を提供していると述べています。しかし、これは、私たち自身の広範囲にわたるテストや、サービスを利用している顧客から聞いたことを反映していません。 まず、この研究者達は古いバージョンの Amazon Rekognition を使用しています。私たちは、11 月に大幅な改善を行っています。次に、AWS が Amazon Rekognition […]

Read More
keras-logo

Amazon SageMaker で簡単に Keras を使う方法

Amazon SageMaker は、すべての開発者とデータサイエンティストに機械学習モデルの構築、トレーニング、デプロイの手段を提供する AWS のマネージドサービスです。SageMaker は深層学習の主要なフレームワークをサポートしており、TensorFlow、Apache MXNet、PyTorch、Chainer などを用いてモデルを記述することができます。また、TensorFlow や MXNet をバックエンドとした Keras の高レベルな API を用いることで、モデルを簡単にすばやく作成することもできます。 これまで、Keras で書いたコードを SageMaker 上で動かす方法について、多くのお客様からご質問を頂いておりました。2018年12月に、SageMaker の TensorFlow ならびに MXNet のコンテナに、それぞれのフレームワークをバックエンドとする Keras がデフォルトでインストールされました。また両コンテナでは Script Mode をサポートしているため、SageMaker 外で開発した Keras のコードに、わずかな修正を加えるだけで動かすことができるようになりました。ここでは Keras 公式サンプルコードの mnist_cnn.py をなるべくそのまま利用して、SageMakerのTensorFlowとMXNetコンテナで実行する方法をご説明します。   TensorFlow Backend での Keras の使い方 トレーニングスクリプトの修正 AWS のマネージドコンソールから SageMaker ノートブックインスタンス (Jupyter/JupyterLab) を開き、Keras のリポジトリをクローンします (このブログのようにノートブックインスタンスの作成時に関連付けることも可能です)。keras/examples/mnist_cnn.py の中で以下の3点を修正します: 学習からモデルの保存までを train(args) 関数として定義します。ここでは次の手順で読み込む args […]

Read More

AWS がエッジデバイスの ML 展開を加速するオープンソースの Neo-AI プロジェクトをロンチング

 re:Invent 2018 で、Amazon SageMaker Neo が発表されました。機械学習モデルを一度トレーニングすると、クラウドおよびエッジ内ではどこでも実行できる新しい機械学習機能です。今日、私たちは Apache Software License の下でオープンソースの Neo-AI プロジェクトとしてコードを公開しています。このリリースでは、プロセッサベンダー、デバイスメーカー、および深層学習の開発者が、機械学習における新しい独自のイノベーションをさまざまなハードウェアプラットフォームにすばやく取り入れることができます。 通常、開発者は各プラットフォームのハードウェアおよびソフトウェア構成に合わせて、モデルを手動で調整する必要があるため、複数のハードウェアプラットフォームに対して機械学習モデルを最適化することは困難です。コンピューティング能力とストレージが制約される傾向があるエッジデバイスにとっては、特に困難です。これらの制約により、実行できるモデルのサイズと複雑さが制限されます。そのため、最高のパフォーマンスを得るために、開発者が手動でモデルを調整するのに数週間または数ヶ月かかります。調整プロセスには、最適化手法に関する稀な専門知識とハードウェアに関する深い知識が必要です。それでも、優れたツールをすぐに利用できないため、優れたパフォーマンスを得るには、通常、かなりの試行錯誤が必要となります。 ソフトウェアの違いにより、この作業はさらに複雑になります。デバイス上のソフトウェアがモデルと同じバージョンでない場合、モデルはデバイスと互換性がありません。これにより、開発者は自分のモデルのソフトウェア要件と完全に一致するデバイスのみに制限するようになります。 したがって、機械学習アプリケーションをすばやく構築、拡張、および維持することは非常に困難です。 Neo-AI は、TensorFlow、MXNet、PyTorch、ONNX、および XGBoost モデルを自動的に最適化して、最大元のモデルの 2 倍速で正確性を損なうことなく実行できます。これにより、複数プラットフォームへ展開する機械学習モデルの調整に必要な時間と労力を省きます。さらに、ソフトウェアの互換性の問題を排除するために、モデルを効率的な共通フォーマットに変換します。ターゲットプラットフォームでは、コンパクトなランタイムによって通常のフレームワークが消費するリソースのごく一部を使用します。最適化を簡素化にすることによって、Neo-AI は洗練されたモデルがリソースに制約のあるデバイス上で動作することを可能にします。また、そこで自律走行車、ホームセキュリティ、および異常検出などの分野におけるイノベーションを引き出します。Neo-AI は現在、Intel、NVIDIA、および ARM のプラットフォームをサポートしており、Xilinx、Cadence、および Qualcomm のサポートも近日中に開始する予定です。 Neo-AI は、主要な機械学習コンパイラであり、LLVM や Halide など従来のコンパイラテクノロジーに関する、数十年にわたる研究に基づいて構築されたランタイムです。Neo-AI コンパイラには、ワシントン大学で開始したオープンソース研究プロジェクトの TVM と Treelite に対する修正が含まれています。今日の Neo-AI プロジェクトを通じて AWS コードをオープンソースにリリースすることで、開発者はプロダクショングレードの Neo コンパイラとランタイムをイノベーションすることができます。Neo-AI プロジェクトは、AWS、ARM、Intel、Qualcomm、Xilinx、Cadence などを含め、複数の組織によって進められます。 Neo-AI プロジェクトと連携することで、モデルのパフォーマンス向上に最大の効果を発揮する時点で、プロセッサベンダーはカスタムコードをコンパイラにすばやく統合できます。このプロジェクトにより、デバイスメーカーは、デバイス特定のソフトウェアおよびハードウェアの構成に合わせて Neo-AI ランタイムをカスタマイズすることもできます。Neo-AI ランタイムは現在、ADLINK、Lenovo、Leopard Imaging、Panasonic などのデバイスに導入されています。Neo-AI プロジェクトは、さまざまなソースによるイノベーションを機械学習用の共通コンパイラおよびランタイムに吸収して、利用可能な最高のパフォーマンスをモデルに提供します。 Intel の […]

Read More