Amazon Web Services ブログ

最新 – Amazon Comprehend でカスタム文書分類子をトレーニングする

Amazon Comprehend は自然言語のテキストを大量に処理するパワーをもたらします (詳しくは、入門的な内容を記した、私の投稿記事、Amazon Comprehend – Continuously Trained Natural Language Processing をご覧ください)。2017 年に英語およびスペイン語のサポートとともに立ち上げて以来、私たちはお客様のニーズに基づいた機能を追加してきました。たとえば、非同期バッチオペレーション、構文分析、多言語サポート (フランス語、ドイツ語、イタリア語、ポルトガル語)、リージョンの追加などが挙げられます。 自動機械学習 (AutoML) を使用することで、Comprehend は ML の入力と出力を学習する必要のない、お客様が既にお持ちのデータを使用したカスタム自然言語処理 (NLP) モデルの作成を実現します。お客様のデータセットとユースケースに基づき、適切なアルゴリズムを自動的に選択して、パラメータ、ビルドのチューニング、および結果モデルのテストを行います。 タグ付き文書のコレクションを既にお持ちであれば (サポートチケット、Amazon Transcribe 経由、フォーラムの投稿などといったコールセンターの会話)、開始点としてこれらをご使用いただけます。この場合、タグ付きとは単に、各文書が検証済みであり、望ましい方法で特徴づけるラベルが割り当てられていることを意味します。カスタム分類には少なくともラベルごとに 50 件の文書が必要ですが、数百または数千件の文書があれば特徴づけの精度が上がります。 この記事では主にカスタム分類について取り上げ、適切なテキストから不適切な表現を含むテキストを分離するモデルのトレーニング方法をご紹介します。続いて、新しいテキストを分類するモデルの使用方法をご紹介します。 分類子の使用 開始点となるのは次の様なトレーニングテキストの CSV ファイルです (ここでは画像を加工していますが、不適切な言葉が多数含まれています)。 トレーニングデータは S3 オブジェクト内に常駐している必要があり、また、1 行につきラベルと文書を 1 つづつ指定します。 次に、Amazon Comprehend コンソールへ移動し、[Classification] (分類)をクリックします。私は既存の分類子を持っていないので、[Create classifier] (分類子の作成) をクリックします。 分類子に名前をつけ、文書の言語を選択し、自分のトレーニングデータが置かれている S3 バケットを選択します。その後、そのバケットへのアクセス許可をもつ AWS Identity and Access Management […]

Read More

AWS Glue のクロスアカウントおよびクロスリージョンの接続を行う

AWS Glue は、抽出、変換、ロード (ETL) のための完全マネージド型サービスであり、分析のためのデータの準備と読み込みを簡単にします。AWS Glue は、AWS Glue ドキュメントで説明されているように、接続を使用して、特定のタイプのソースおよびターゲットのデータストアにアクセスします。 デフォルトでは、AWS Glue を使用して、AWS Glue リソースを備えているのと同じ AWS アカウントおよび AWS リージョンのデータストアへの接続を行うことができます。このブログ記事では、AWS Glue リソースを備えているのとは異なるアカウントや AWS リージョンのデータストアにアクセスする方法について説明します。 AWS Glue の接続 AWS Glue は、ドキュメントで説明されているように、AWS Glue データカタログで、接続を使用してデータストアのメタデータをクロールおよびカタログ作成します。また、AWS Glue ETL ジョブも、接続を使用してソースおよびターゲットのデータストアに接続します。AWS Glue は、Amazon Redshift、Amazon RDS、JDBC データストアへの接続をサポートしています。 接続には、AWS Glue がデータストアにアクセスするために必要なプロパティが含まれています。こうしたプロパティには、ユーザー名とパスワード、データストアのサブネット ID、セキュリティグループなどの接続情報が含まれている場合があります。 データストアが Amazon VPC 内にある場合、AWS Glue は VPC のサブネット ID とセキュリティグループ ID という接続プロパティを使用して、データストアを含む VPC […]

Read More

AWS での Apache Kafka の実行のためのベストプラクティス

この記事は Intuit とのパートナーシップに基づいて書かれ、AWS で Apache Kafka クラスタを実行するための学習、ベストプラクティス、推奨事項を共有するものです。Intuit の Vaishak Suresh と同氏の同僚の方々の貢献とサポートに感謝いたします。 Intuit の概要: Intuitは、AWS のエンタープライズ顧客のリーダーであり、ビジネスと財務管理ソリューションのクリエーターです。Intuit の AWS とのパートナーシップに関する詳細については、以前のブログ記事 Real-time Stream Processing Using Apache Spark Streaming and Apache Kafka on AWSを参照してください。Apache Kafka はリアルタイムのストリーミングアプリケーションを構築することを可能にする、オープンソースの分散型ストリーミング プラットフォームです。 この記事に記載されているベストプラクティスは、2年以上にわたり、AWS で大規模な Kafka クラスタを実行し運営する当社の経験に基づいています。この記事では、AWS で Kafka を現在実行している AWS 顧客を支援し、また AWS にオンプレミスの Kafka 展開を移行することを考えている顧客も支援することを目的としています。

Read More

Oracle データベースを Amazon RDS PostgreSQL または Amazon Aurora PostgreSQL に移行するための成功事例: Oracle および AWS DMS CDC 環境のソースデータベースに関する留意事項

AWS クラウドにおける Oracle から PostgreSQL への移行は、評価段階からカットオーバー段階まで、さまざまな技術とスキルを伴う複雑な多段式のプロセスになる可能性があります。伴う複雑さの内容をさらに詳しく理解するには、AWS データベースのブログ投稿をご参照してください。データベースの移行 – 開始する前に知っておくべきこととは? このブログの投稿は一連の投稿の 2 回目です。前回の移行プロセスとインフラストラクチャに関する留意事項では、移行プロセスの準備について、そして最適なパフォーマンスを手に入れるためのインフラストラクチャ設定の注意点について説明しています。この 2 回目の記事では、元の Oracle データベースの構成と環境を両方とも 1 回の移行と、 change data capture (CDC) という方法による継続的なレプリケーションで設定する方法について説明しています。ソースデータベースの変更を保存するために Oracle DB コンポーネントを適切に設定することにより、思い通りに AWS Database Migration Service (AWS DMS) のサービス環境を構築することができます。このシリーズの3回目となる最後のブログ記事は、AWS DMS を使用したデータベース移行プロセスのエンドポイントである、ターゲットのPostgreSQLデータベース環境の設定を取り上げます。 AWS DMSは、Amazon RDSまたはAmazon EC2のデータベースのオンプレミスデータベースを Amazon RDS またはAmazon Auroraデータベースに移行するためのサービスです。Amazon DMS は、 Oracle から Oracle への同機種間の移行や、 AWS クラウドの Oracle から MySQL 、PostgreSQL […]

Read More

Amazon Comprehend カスタムエンティティの利用を開始する

プライベートなカスタムエンティティタイプのサポートを可能にする Amazon Comprehend の更新をリリースしました。お客様は、完全に自動で特定の用語を抽出できる、最先端のエンティティ認識モデルのトレーニングをすることができます。機械学習の経験は必要ありません。このサービスにより、お客様は ML の入力と出力を学習しなくても、すでにお持ちのデータを使用してカスタムモデルを作成することができます。お客様はこの機能を使用して、保険証券番号、部品コード、シリアル番号などの組織のニーズに合ったカスタムエンティティを抽出するモデルを簡単に構築できます。 カスタムエンティティタイプを学習するためにサービスをトレーニングすることは、エンティティのセットや、それを含む現実のドキュメントのセットを提供するのと同じくらい簡単です。開始するには、エンティティの一覧をまとめます。製品データベースや、会社が経営計画に使っているエクセルファイルからエンティティを収集します。このブログ記事では、カスタムエンティティタイプをトレーニングして、財務書類から主要な財務用語を抽出します。 CSV 形式では、カラムヘッダとして「Text」と「Type」を必要とします。エンティティとタイプを含む文字列が、作成しようとしているエンティティタイプの名前です。 次に、それらのエンティティがどのように使われているかという観点から、エンティティを含むドキュメントのセットを集めます。このサービスでは、一覧のエンティティを少なくとも 1 つ以上含むドキュメントが、最低 1000 は必要です。 次に、1 つのフォルダからエンティティの一覧の CSV を読み込み、別のフォルダからすべてのドキュメントを含むテキストファイル (1 行に 1 つ) を読み込むようにトレーニングジョブを設定します。 両方のトレーニングデータの準備が整ったら、モデルのトレーニングをします。このプロセスは、トレーニングデータの量や複雑さによって、数分の場合もあれば、数時間かかる場合もあります。Amazon Comprehend では、自動機械学習を使用して、そのデータに最もよく機能する正しい組み合わせを見つけるために、正しいアルゴリズムを選択し、モデルのサンプリングとチューニングを行います。 トレーニングが完了するとカスタムモデルの準備が整います。以下に、有益なメタデータと、トレーニングされたモデルを示します。 カスタムエンティティを探すドキュメントの分析を開始するには、AWS SDK を使用してポータルまたは API のいずれかを使用します。この例では、カスタムエンティティタイプを使用して財務書類を分析する分析ジョブをポータルに作成します。 CLI を使用した同じジョブ送信がどのようになるかを示します。 aws comprehend start-entities-detection-job \ –entity-recognizer-arn “arn:aws:comprehend:us-east-1:1234567890:entity-recognizer/person-recognizer“ \ –job-name person-job \ –data-access-role-arn “arn:aws:iam::1234567890:role/service-role/AmazonComprehendServiceRole-role” \ –language-code en \ –input-data-config “S3Uri=s3://data/input/” \ –output-data-config “S3Uri=s3://data/output/“ […]

Read More

Amazon S3 Block Public Access – アカウントとバケットのさらなる保護

新規で作成される Amazon S3 バケットとオブジェクトは、デフォルトでは (常に継続して) プライベートであり、保護されていますが、アクセスコントロールリスト (ACL) と バケットポリシーを利用すると、他の AWS アカウントに対し、あるいはパブリック (匿名) のリクエストに対し、アクセス権を付与することができます。ACL と ポリシーにより柔軟性が大きく向上します。複数のアカウントへのアクセス許可の付与、特定の IP アドレスへのアクセスの制限、Multi-Factor Authentication (MFA) の使用要求、他のアカウントがバケットに新規オブジェクトをアップロードすることの許可の他、さらに多くのことが可能です。 私たちには、ユーザーがパブリックのバケットやオブジェクトを必要に応じて確実に使用できるようにしたいとの思いがあります。そのため、くれぐれも単純ミスや誤解が原因でバケットやオブジェクトがパブリックでアクセス可能になってしまうことのないよう、ツールを提供しています。例えば、昨年は [パブリック] インジケータ―を提供し、どのバケットがパブリックアクセス可能なのか一目でわかるようにしました。 バケットの表示は、デフォルトでパブリックバケットがページ上部に表示されるようソートされます。 また、Trusted Advisor のバケットアクセス権限チェックを無料にしました。 新しい Amazon S3 Block Public Access 今日は、Amazon S3 Block Public Access の紹介を通して、皆さんがバケットとオブジェクトをより簡単に保護できるようにしたいと思います。これは新しいレベルの保護であり、アカウントレベルで、また今後作成するものを含めた個々のバケットに対して機能します。ACL やポリシーで指定された既存のパブリックアクセスをブロックしたり、新規に作られたアイテムへのパブリックアクセス付与を確実に防止したりできます。AWS アカウントをデータレイクや他のビジネスアプリケーションのホストに使用している場合、パブリックアクセスをブロックすることで、意図せぬ公開をアカウントレベルで防ぐのに役立ちます。パブリックアクセスはウェブホスティングに役立つことをぜひ理解していただきたいと思います。 この機能は簡単に使えるよう設計されており、S3 コンソール、CLI、S3 API、CloudFormation テンプレートでアクセスできます。S3 コンソールとパブリック設定のバケットから始めましょう。 [このアカウントのパブリックアクセス設定] をクリックすると、アカウントレベルでの制御を行うことができます。 パブリック ACL を管理するためのオプションが 2 つと、パブリックバケットポリシーを管理するためのオプションが 2 つあります。それぞれを詳しく見ていきましょう。 […]

Read More

re:Invent 2018 におけるユニークなセッション

最近、re:Invent Session Catalogに 3 つのユニークな朝食セッションが追加されたので、皆さんがそれらについて知らないということがないようにしたいと思っています。 Peter Vosshall のような優れたエンジニア、Colm MacCarthaigh のようなプリンシパルエンジニア、そして AWS のサービス全体を担うディレクターと副社長が 3 日の期間中に話すのは極めて異例であるため、re:Invent 2018 で、Peter と Colm から、そして Deepak Singh (AWS コンテナ)、David Richardson (サーバーレス)、および Ken Exner (開発者ツール) から話を聞くことができるこの機会をぜひご利用ください。 How AWS Minimizes the Blast Radius of Failures の席を確保して、Peter Vosshall が AWS における業務の指針となる理念、そしてシステム不具合の影響範囲を縮小するために AWS が使用するテクニックについて率直に話すのをお聞きください。 Closing Loops and Opening Minds: How to Take Control of Systems, […]

Read More

Amazon Kinesis Agent for Windows を使用して、Windows DHCP Server ログを即時に利用可能なメトリクスへ変換する

グローバルな規模で、Windows システムとサービスの健全性を把握することは簡単ではありません。サーバーのログデータを取得し、リアルタイムでデータを分析かつ操作して、即時に実行可能なテレメトリーに関する正しい情報を作成しましょう。Amazon Kinesis Agent for Microsoft Windows では、AWS の分析エコシステムに Windows サーバーログデータを効率よく収集できるようにします。このブログ記事では、Kinesis Agent for Windows を使用して、Windows Dynamic Host Configuration Protocol (DHCP) のサーバーログを取得および集計する方法について説明します。次に、そのデータを Amazon CloudWatch で、サービスヘルスを示すグラフに変換します。 世界中に散らばるチームのネットワークアクセスのメトリクスを、どうやって数値化していますか? もっと具体的には、ビルの 9 階、北東の角部屋にいるチームのメトリクスは? ビルの中のその部屋のワイヤレスアクセスポイント (WAP) は、チームにネットワークアクセスを確実に安定して提供しているでしょうか? あるいは、WAP が設定されているサブネットが IP アドレスを使い果たしてしまい、そのチームがネットワークアクセスするのを拒否していませんか? この記事では、Kinesis Agent for Windows を使用して、こうした重大な問題を解決します。 スコープの枯渇がもたらす、顧客への影響を検出する Windows DHCP リースは、スコープと呼ばれるネットワークサブネットに分割されています。これらのスコープは、大規模な企業ネットワーク上の、専用の物理的な位置にマップされています。スコープは、それに属するすべての IP アドレスが使用されている場合に、いっぱいであるとみなされます。これは「スコープの枯渇」として知られています。「スコープの枯渇」が発生すると、新しいクライアントはそのサブネット上での IP アドレスのリースを拒否されます。これは「リースの拒否」と呼ばれます。  一般に、DHCP スコープは、予想されるデバイスの正確な数に対して定義されます。スコープが枯渇していることが予想される場合、それもただ単にスコープの枯渇に基づいている場合では、アラートが出ても意味がありません。 Windows DHCP サーバーが「スコープの枯渇」のせいでリースを拒否した場合、特定のレコードを DHCP 監査ログに書き込みます。このイベントのレコードは、Event […]

Read More

AWS で独自の自然言語モデルを構築する (機械学習経験は必要ありません)

AWS は、昨年の AWS re:Invent で Amazon Comprehend を発表しました。これは、非構造テキストからキーフレーズ、場所、人物、名前、ブランド、イベント、およびセンチメントを抽出する自然言語処理サービスです。AWS によって訓練された高度な深層学習モデルによって動作する Comprehend では、機械学習スキルを必要とすることなく、開発者なら誰でもアプリケーションに自然言語処理を追加することが可能になります。 本日 のブログ記事では、開発者が Comprehend を拡張して、自然言語用語を識別し、そのチーム、ビジネス、または業界に特化したテキストを分類できるようにする、Comprehend の新しいカスタム化機能についてお知らせしたいと思います。 AWS では、大勢のお客様から、データ、特に非構造の自然言語で構成されるデータが過剰にあることをお聞きしていますが、大量に存在するカスタマー E メール、サポートチケット、会計報告、製品レビュー、ソーシャルメディア、または広告文の中に隠れている有力情報の宝庫を見つけるために組織の内部を掘り起こす必要はなくなると思われます。藁山の針を探す援助をすることは、機械学習が特に得意とすることです。機械学習モデルは、大量のテキストの中から関心がある特定のアイテムを探し出すことにおいて極めて正確になり得 (分析レポート内での企業名の検索など)、言葉の中に隠されたセンチメントにも敏感です (否定的なレビュー、またはカスタマーサービス担当者とカスタマーの建設的な交流の特定)。 Comprehend は一般名称 (場所および物など) の検索のために高精度のモデルを備えていますが、お客様は、その機能を拡張して、ポリシー番号や部品コードなどのより具体的な言語を識別したいと考えておられることがよくあります。これには通常、何もない状態から初めて、新しい専門的な機械学習言語モデルを構築すること (データに注釈を付ける、アルゴリズムを選択する、パラメータを調整する、モデルを最適化する、そして本番でモデルを実行する) が伴います。これらすべての手順には、深層機械学習に関する専門知識が必要となるだけでなく、「Undifferentiated Heavy Lifting」(差別化につながらない重労働)、つまり多くのアプリケーション開発者がむしろ独自の新しい機能の構築に費やしたいと考える労力も意味しています。 Amazon Comprehend のカスタマイズ (機械学習経験は必要ありません) 今日、AWS はお客様が藁山でより多くの針を見つけるためのお手伝いをしています。これに機械学習スキルは必要ありません。Comprehend は目に見えないところでカスタマイズされた機械学習モデルを構築、訓練、およびホストするための重労働を行い、プライベート API を通じてこれらのモデルを利用できるようにします。 カスタムエンティティは、開発者が Comprehend をカスタマイズして、開発者の分野に特定の用語を識別することを可能にします。Comprehend は、例から成る小規模のプライベートインデックス (例えば、ポリシー番号のリスト、およびそれらが使用されるテキスト) から学び、他のテキストブロックでこれらを認識するようにプライベートなカスタムモデルを訓練します。管理するサーバーもなければ、習得するアルゴリズムもありません。 カスタム分類は、開発者が名前が付けられたカテゴリにドキュメントをグループ化できるようにします。わずか 50 件の例で、Comprehend はドキュメントのすべてを分類するために使用できるカスタム分類モデルを自動的に訓練します。サポート E メールを部署ごとに、ソーシャルメディア記事を製品ごとに、または分析レポートを事業単位ごとにグループ化することができます。例がない、またはカテゴリが頻繁に変更される場合 (これはソーシャルメディアで良く見られます)、Comprehend はトピックモデリングを使用してドキュメントの内容だけに基づいて分類することもできます。 Amazon Comprehend […]

Read More

ハイパーパラメータチューニングジョブのウォームスタートを使って、Amazon SageMaker 自動モデルチューニングの効率をさらに向上

今年初め、当社は Amazon SageMaker 自動モデルチューニング を発表しました。これは開発者とデータ科学者が、機械学習モデルのトレーニングとチューニングにかかる多くの時間と労力を削減することを可能にしてくれます。本日、自動モデルチューニングでハイパーパラメータチューニングジョブのウォームスタートを開始します。データ科学者と開発者は、選択された親ジョブに基づいて新しいハイパーパラメータチューニングジョブを作成できるようになり、親ジョブで実行されたトレーニングジョブを事前知識として再利用できます。ハイパーパラメータチューニングジョブのウォームスタートは、ハイパーパラメータチューニングプロセスを加速し、チューニングモデルのコストを削減します。 データ科学者と開発者は、すでに自動モデルチューニングを使用してモデルを効率的にチューニングすることができましたが、さらに多くの支援が必要な分野があります。例えば、小規模予算でハイパーパラメータチューニングジョブを開始し、結果を分析後に、より大きな予算でモデルのチューニングを続けることを決定します。潜在的に異なるハイパーパラメータ設定を使用することもあります (チューニングにより多くのハイパーパラメータを追加したり、一部のハイパーパラメータで異なる検索範囲を試すなど)。もう 1 つの例は、データ科学者または開発者が、以前のモデルチューニングの後に新しいデータを収集し、モデルを再チューニングする場合です。どちらの場合も、このモデルの以前のチューニングジョブから収集した事前知識を使用してハイパーパラメータチューニングジョブを開始すると、最高のモデルに素早くアクセスし、顧客のコストを節約することに役立ちます。しかし、以前に行ったすべてのチューニングジョブはゼロから開始になります。同様のチューニング構成で同じモデルがすでにチューニングされていても、情報は再利用されませんでした。 ハイパーパラメータチューニングジョブのウォームスタートはこれらのニーズに対応します。ここでは、ウォームスタートを活用してモデルを繰り返しチューニングする方法を紹介します。 ウォームスタートを活用した画像分類モデルのチューニング この例では、画像分類子を作成し、ウォームスタートを利用して複数のハイパーパラメータチューニングジョブを実行することによって、画像分類子を繰り返し調整します。Amazon SageMaker 組み込み画像分類アルゴリズム を使用して、モデルを Caltech-256 データセットでトレーニングします。完全なサンプルノートブックはこちらから参照できます。 ハイパーパラメータチューニングジョブの開始と起動 ノートブックインスタンスの作成、データセットの準備、Amazon S3 へのプッシュ、ハイパーパラメータチューニングジョブの起動から直接起動する手順は省略します。サンプルノートブックにはすべての詳細がありますので、ここではプロセスを検討はしません。 この最初のチューニングジョブを実行して、検索スペースについて学習し、画像分類でチューニング可能なパラメータをチューニングする影響を評価します。このジョブは、モデルのチューニングが有望であるかどうか、そして後続のチューニングジョブを作成してチューニングを続行するかどうかを評価します。 チューニングジョブを作成するには、最初に組み込み画像分類アルゴリズム用のトレーニング推定器 (Estimator) を作成し、チューニングする予定のものを除いて、このアルゴリズムのすべてのハイパーパラメータの値を指定する必要があります。組み込み画像分類アルゴリズムのハイパーパラメータについての詳細は、こちらの文書 を参照してください。 s3_output_location = ‘s3://{}/{}/output’.format(bucket, prefix) s3_input_train = sagemaker.s3_input(s3_data=’s3://{}/{}/train’.format(bucket, prefix), content_type=’application/x-recordio’) s3_input_validation = sagemaker.s3_input(s3_data=’s3://{}/{}/validation/’.format(bucket, prefix), content_type=’application/x-recordio’) sess = sagemaker.Session() imageclassification = sagemaker.estimator.Estimator(training_image, role, train_instance_count=1, train_instance_type=’ml.p3.8xlarge’, output_path=s3_output_location, sagemaker_session=sess) imageclassification.set_hyperparameters(num_layers=18, image_shape=’3,224,224′, num_classes=257, num_training_samples=15420, […]

Read More