Skip to content

コアセット

Coreset APIは、エッジとクラウドやコアの間でデータを効率的に転送することで、エッジAIを実現します。コアセットのアルゴリズムは、ネットワークのエッジでデータをインテリジェントに圧縮・抽出し、クラウドに転送してAI処理を行います。

エッジコンピューティングでは、エッジから収集したデータを中央に転送して処理(モデルの学習、モデルの作成、推論など)を行い、エッジで得た知識を組み合わせて全体像を把握する必要があるアプリケーションが多くあります。エッジで収集されるデータは膨大な量になるため、伝送コストやレイテンシーの問題から、異なる種類のデータをネットワーク上で効率的に配信するためのデータ圧縮が必要になります。

Coreset APIはこの目的のために設計されており、エッジの場所から学習データを収集する際のAIモデルの作成に主眼を置いた圧縮アルゴリズム群を実装しています。

モバイルやロボットのIoTデバイスなど、ネットワーク内に数十万台のエッジデバイスを持つ大企業に勤める機械学習エンジニアのミーラさんの例を見てみましょう。エッジデバイスのデータは常に作成され、エッジからコアのクラウドセンターまで、ネットワークを流れています。これまで、エッジデータを効率的に分析・利用することは難しく、その多くは上書きされ、分析されないままになっていました。Meeraと彼女のチームは、ビデオのエッジデバイスデータに焦点を当て、データにセキュリティ違反がないかどうかを監視することを任務としています。彼女の会社は、可能な限りリアルタイムで洞察を得たいと考えています。Meeraのチームは、エッジデバイスにAI処理を追加して、映像に異常がないかを分析するよう求められています。データの遅延時間を改善し、コストを削減するためには、エッジデバイスのデータを効率的に圧縮し、重要な情報を失わずにネットワークを介して送信できれば、より効率的だとミーラは考えています。彼女が求めているのは、スマートな圧縮とデータの抽出です。理想的には、AIモデルやエッジデバイスのデータはエッジごとに異なるため、豊富なアルゴリズムの中から、適切なデータに適切な圧縮・抽出アルゴリズムをマッチさせることができるようにしたい。

Coreset APIは、17種類の機械学習アルゴリズムをサポートしており、データの特性を圧縮・抽出することで、データの忠実性を損なうことなく、生データセットのサイズを大幅に削減することができます。これにより、クラウド(またはコア)での学習のためにデータを準備します。コアセットAPIは、オーディオ、ビデオ、画像、テキストといったさまざまな種類のデータに対応しており、以下のようなアルゴリズムを実装しています。

  1. ロスレス圧縮:データから冗長な情報を取り除き、圧縮を実現する。モデルの忠実度に変化はないが、データの削減効果は大きくない。

  2. ドメイン固有の特徴抽出器を用いてデータ量を大幅に削減する「特徴抽出」。圧縮率は高いが、モデルの忠実度は変わらない。

  3. 非可逆圧縮:周波数領域や時間領域から特徴を抽出し、それを符号化して圧縮する。MP3、JPEG、MP4などの標準的な圧縮アルゴリズムが代表例。

  4. 高度なアルゴリズム。

    • 主成分を算出し,それを用いてデータの基底変更を行う主成分分析。 主成分を計算し,それを用いてデータの基底を変更する主成分分析 * セントロイドとサンプル分布を用いてデータを特徴づけるクラスタリングベースのアプローチ * オートエンコーダー(人工ニューラルネットワーク)。
    • データに内在する分布を学習し、統計的に類似したデータを中心位置に再現する人工ニューラルネットワークであるオートエンコーダー。
    • 音声データからMFCCを抽出し、音声解析に利用することができます。

Coreset APIによるスマートな圧縮とデータ抽出

エッジコンピューティングでは、エッジで収集されるデータ量が膨大になるため、ネットワーク伝送の遅延やコストを削減するためにデータ圧縮が必要になります。

Coreset APIは、エッジロケーションから学習データを収集する際のAIモデルの作成を主眼とした、一連の圧縮・抽出アルゴリズムを実装しています。

このチュートリアルでは、Edge AI Coreset APIを使用して、オートエンコーダーを使用して指定したデータセットから特徴を抽出する方法をステップバイステップで説明します。APIの使用を開始するのに役立つサンプルコードスニペットが含まれており、IBM API HubプラットフォームでEdge AIのトライアルサブスクリプションにアクセスするなど、いくつかの基本的なステップをカバーしています。

チュートリアルではPythonのコード・スニペットを使用していますが、APIを呼び出すために独自のプログラミング言語を選択することができます。リファレンス・コード・スニペットは、APIドキュメント・ページで特定の言語(例えば、cURL、Java™言語、Node、PHP、Go、Swift、Ruby)に対応しています。このチュートリアルは、以下のEdge AI Coreset APIについて使用できます。

  • /jpeg_compress:指定された画像を、与えられた品質係数で圧縮します。
  • /jpeg_decompress:指定された JPEG 画像を解凍します。
  • /wav_to_mp3:指定された .wav ファイルを、指定されたビットレート(例えば、'128k'、'192k'、'256k')で .mp3 ファイルに圧縮します。
  • /mp3_to_wav:指定された .mp3 ファイルを .wav ファイルに解凍します。
  • /compress_nparray:指定された nparray データをデフォルトのアルゴリズムでロスレスに圧縮します。
  • /decompress_nparray:指定された nparray のデータをデフォルトのアルゴリズムで伸長します。
  • /compress_nparray_zlib:指定された nparray のデータを zlib を用いてロスレスに圧縮します。
  • /decompress_nparray_zlib: 指定された nparray データを zlib でロスレスに圧縮します。指定された nparray のデータを zlib を用いて伸長します。
  • /compress_nparray_bz2: 指定された nparray のデータを bz2 で可逆圧縮します。
  • /decompress_nparray_bz2: 指定された nparray のデータを bz2 を用いて伸長します。
  • /compress_obj: 指定された object データをロスレスで圧縮します。
  • /decompress_obj: 指定された object データを伸長します。
  • /clustering_compress_dataset: 指定されたデータセットを圧縮します。指定されたデータセットをクラスタリング手法で圧縮します。
  • /clustering_decompress_dataset: 指定されたデータセットをクラスタリング手法で圧縮します。指定したデータセットをクラスタリング手法で圧縮解除します。
  • /ae_extract_feature:指定したデータセットから特徴量を抽出します。指定されたデータセットからオートエンコーダーを使って特徴量を抽出します。
  • /extract_mfcc: 指定されたオーディオデータセットからラベルとMFCCを抽出します。
  • /pca_analysis:トレーニングデータセットでモデルを学習し、そのモデルを使ってテストデータセットからPCA成分を抽出します。

前提条件

このチュートリアルを完了するには、以下のものが必要です。

  • IBM ID
  • Python 3

見積もり時間

このチュートリアルを完了するには、約15分かかります。

手順

ステップ 1.環境設定

環境を整えるために

  1. Edge AI APIのドキュメントページに移動し、Get trial subscriptionをクリックします。

    トライアルサブスクリプション

  2. すでにIBM IDを持っている場合は、登録ページでログインします。そうでない場合は、自分で新しいIBM IDを作成します。

  3. ログインすると、システムはお客様にトライアルサブスクリプションの権利を与え、My IBM ページに移動します。「Trial for Edge AI API」タイルを探して、「Launch」をクリックします。

  4. 「My APIs」ページで、「Edge AI」タイルをクリックします。ページが開いたら、[Key management]セクションを見つけ、行を展開してClient IDとClient secretの両方を確認し、可視性(目)アイコンをクリックして実際の値を表示します。これらの値は、このチュートリアルで使用するAPIキーなので、メモしておいてください。

    鍵の管理

  5. 受け取ったAPIキーの値を含むconfig.jsonファイルを作成します。

  6. pip を使って、Python パッケージ requests をインストールします。

ステップ 2.Coreset autoencoder extract feature API を起動します。

APIドキュメントページには、データセットに対して呼び出すことができるいくつかのAPI操作が記載されています。今回の例では、autoencoder extract feature を使用します。このAPIは、オートエンコーダーを使って、指定したデータセットから情報を損なうことなく特徴を抽出します。

<スクリーンショットの追加>

Step 3.コードスニペット

以下のコード例では、MNISTデータ(0~9の手書き数字の28x28グレースケール画像60,000枚と、画像10,000枚のテストセットからなるデータセット)を使用し、Edge AIオートエンコーダーを使用して、データを失うことなく特徴を抽出しています。機械学習エンジニアのMeeraさんのシナリオでは、彼女が大規模な画像データセットを持っていて、これと同じ特徴抽出ステップが必要になるかもしれません。ここではその方法を紹介します。

このPythonコードを実行する際、Pythonの環境によっては、コマンドプロンプトでこれらのプレステップを実行する必要があるかもしれません。

  • pip install requests (リクエストのインストール)
  • pip install tensorflow (テンソルフローのインストール)
  • pip install keras (日本語)

Step 4.APIスイートのその他の操作

ステップ2とステップ3を利用して、APIドキュメントページから各エンドポイントのドキュメント(リクエストURLと期待されるパラメータ)を参照することで、以下のCoreset APIを呼び出すことができます。

  • jpeg_compress
  • jpeg_decompress
  • wav_to_mp3
  • mp3_to_wav
  • compress_nparray
  • decompress_nparray
  • compress_nparray_zlib
  • compress_nparray_zlib * decompress_nparray_zlib
  • compress_nparray_bz2
  • compress_nparray_bz2 * decompress_nparray_bz2
  • compress_obj
  • decompress_obj
  • clustering_compress_dataset
  • clustering_decompress_dataset(クラスタリングの圧縮データセット)
  • extract_mfcc
  • pca_analysis

。APIドキュメントのページには、RESTクライアントUIであるTry this API機能もあります。これを使って、同じコンテキストでドキュメントを読んでAPIを呼び出すことができます。

まとめ

このチュートリアルでは、API キーを保護し、IBM Cloud にホストされている Edge AI API を簡単に呼び出す方法を説明しました。このスイートの API は、アプリケーションのニーズに合わせてさまざまなアルゴリズムを呼び出すのに役立ちます。ご質問やご不明な点がございましたら、EdgeAI.User@ibm.com までご連絡ください。