Core ML 3の新機能
以下の記事が面白かったので、ざっくり訳してみました。
0. はじめに
この投稿では、「Core ML 3」の変更点と、開発者および機械学習エンジニアへの影響について説明します。
1. オンデバイストレーニング
「Core ML 3」の最大の新機能は、オンデバイストレーニングです。以前の「Core ML」は推論のみサポートしていました。「TensorFlow」や「PyTorch」などのフレームワークを使用してサーバー側で訓練を行い、アプリで予測を行うため「Core ML」モデルに変換していました。「Core ML 3」からは、推論と訓練の両方をデバイス上でできるようになりました。
訓練は、「mlmodel」の属性とAPI呼び出しの組み合わせて実施します。「isUpdatable」フラグは、パラメータの更新を行うことができる場所を示すために、モデルと個々の層に付加することができます。入力、出力、および損失関数と同様に学習率などのハイパーパラメータは、「mlmodel」に設定することができます。
開発者は「MLUpdateTask」を使用して、訓練を実行できます。そして、Kerasコールバックのように動作する「MLUpdateProgressHandlers」も利用できます。開発者は、万人向けの万能モデルを使用するのではなく、ユーザー毎に調整したモデルを使うことをお勧めします。
「Core ML」のセッション中のデモでは、Appleのエンジニアが採点アプリを使用して教師向けのショートカット機能を作成しました。Apple Pencilで課題をマークする教師は、モデルによって認識され、絵文字ステッカーに変換されるカスタムスケッチを定義できます。いくつかのスケッチ例を描画することで新しいショートカットが作成されました。このスケッチは、出力に必要な絵文字を予測するために、「k近傍法」を訓練するために使用されました。
「モデルのパーソナライズ」は、デバイス上の訓練の1つのユースケースですが、それだけではありません。「Federated Learning」などの「分散トレーニング」に関する最近の研究は、多くのデバイスから正確なモデルを訓練できる可能性を実証しています。「Core ML 3」は、これらのアプローチを実装してAppleデバイスとその強力なハードウェアで実行するための扉を開きます。
デバイス上の訓練は、ユーザーと開発者の両方にとって大きな利点があります。ユーザーは、時間の経過とともに向上する個人的な体験を得ることができます。そして、すべてがデバイス上で実行されるため、インターネット接続の有無にかかわらず動作します。そして、最も重要なことは、ユーザーデータがデバイス上で安全に保持され、第三者に転送されることがないことです。開発者は、訓練モデル用の大規模な分析クラスタを管理したり、訓練データの転送とセキュリティ保護に対処したりする必要もありません。
デバイス上の訓練の利点を実現するには、計画と技術的な選択も必要になります。モバイルデバイスには、大規模なクラウドクラスタと同じコンピューティングリソースやメモリリソースを持たないため、何をいつ更新するかを慎重に検討することが重要です。「Core ML 3」では、大きなモデルのすべてのレイヤーの重みを更新するのではなく、特定のレイヤーを更新可としてタグ付けできます。デバイス上の訓練アーキテクチャでは、グローバルな静的な特徴抽出ツールと、パーソナライズ用のモデルの上部にある小さく更新可能なブロックを使用する必要があります。
2. 新しいアーキテクチャ・レイヤータイプ・オペレーション
「Core ML 3」は、複雑なモデルやユースケースを実現する新しい「アーキテクチャ」「レイヤータイプ」「オペレーション」のサポートも提供します。これらのアップデートは必ずしも派手ではありませんが、大きな違いをもたらします。「Core ML 3」で導入された、新しいモデルには次のものがあります。
・NearestNeighbors.prot
k近傍法(kNN)は、モデルのパーソナライズに最適な、ラベル付けおよびクラスタリングのためのシンプルで効率的なモデルです。
・ItemSimilarityRecommender.proto
リコメンドに利用できるアイテム間の類似性スコアを予測するために、アイテムとスコアのリストを取得するツリーベースのモデルです。
・SoundAnalysisPreprocessing.proto
音声の一般的な前処理タスクを実行する組み込みオペレーションです。たとえば、波形を周波数領域に変換します。
・LinkedModels.proto
複数のモデルで再利用できる共有バックボーンと機能抽出ツールです。
これらの新しいモデルは、コンピュータービジョンを超えたユースケースを可能にし、同じアプリケーションで複数のモデルを利用する開発者に価値をもたらします。「Core ML 3」は、100を超えるニューラルネットワークレイヤータイプを公式にサポートしています。
この記事の付録として、 「NeuralNetwork.proto」に追加された新しいレイヤーの包括的なリストを用意しました。それらのほとんどが名前から何をしているのか推測できますが、詳細な説明については、
「An in-depth look at Core ML 3」を参照してください。
最もエキサイティングな変更は、「MLMultiArray」操作のための「NumPy」ライクなオペレーションのサポートです。これにより、複雑な前処理と後処理をモバイルアプリに簡単に移植できます。「Core ML」は、ループや分岐などの動的なグラフもサポートするようになりました。「Core ML」チームによるこれらすべてのハードワークの結果、最先端のモデルのほとんどが、「Core ML」と完全に互換性を持つようになりました。
これらのアーキテクチャの多くは、縮小してモバイル用に最適化する必要があります(完全にトレーニングされたBERTモデルの重みは1GBを超える可能性があります)が、非常に多くの可能性を感じさせます。最後に、新しいレイヤーの追加は、変換ツールもより堅牢になったことを意味します。「Keras」「TensorFlow」「PyTorchから」のモデルの変換は、カスタムの回避策が少なく、よりスムーズなプロセスである必要があります。
3. 開発者および機械学習エンジニアへの影響
このリリースは、Appleエコシステムにおける機械学習の大きな前進を示しており、開発者にとって多くの意味があります。
(1)「Core ML」はコンピュータービジョンを超えて移行する準備ができています。数年前から、画像関連のタスクがディープラーニング、特にモバイルディープラーニングを支配しています。音声前処理、一般的な推奨モデル、および今年のNLPモデルの収穫に必要な複雑な操作のサポートは、それを変えることを約束します。開発者は、カメラを超えるユーザー向けのMLを活用したエクスペリエンスについて考え始める必要があります。
(2)デバイス上の訓練では、新しいUXおよび設計パターンが必要になります。
・モデルを十分な精度でパーソナライズするには、どのくらいのデータが必要ですか?
・ユーザーからトレーニングデータを求める最適な方法は何ですか?
・これはどのくらいの頻度で行う必要がありますか?
MLがコアアプリケーションロジックにますます近づくにつれて、開発者はこれらの機能がどのようにユーザーに伝えられるかを考える必要があります。
(3)パーソナライズされたモデルには、永続性と同期が必要です。ユーザーがアプリを削除してから再インストールする場合、または複数のデバイスで同じアプリを使用する場合は、パーソナライズを一緒に行う必要があります。
開発者は、モデルをバックアップおよび同期するためのシステムを必要とします。
(4)エンドツーエンドの機械学習を行い、Pythonをスキップできるようになりました。Pythonは、ほぼ10年間、MLエンジニアの優先プログラミング言語でした。モデルを訓練する機能により、「Core ML + Swift」は一部のプロジェクトの実行可能な代替手段になりました。モバイル開発者はPythonを完全にスキップし、既に知っている言語を選択することになるかもしれません。
4. リソース
「Core ML 3」の詳細については、次のリソースをご覧ください。
・An in-depth look at Core ML 3 — Matthijs Hollemans
・Core ML 3 Framework — Apple (Video)
・Core ML — Apple Developer Documentation
・Coremltools — Release Notes
5. Appendix — New Core ML 3 Layers
◎Control Flow Layers:
・CopyLayer
・BranchLayer
・LoopLayer
・LoopBreakLayer
・LoopContinueLayer
・RangeStaticLayer
・RangeDynamicLayer
◎Elementwise Unary Layers:
・ClipLayer
・CeilLayer
・FloorLayer
・SignLayer
・RoundLayer
・Exp2Layer
・SinLayer
・CosLayer
・TanLayer
・AsinLayer
・AcosLayer
・AtanLayer
・SinhLayer
・CoshLayer
・TanhLayer
・AsinhLayer
・AcoshLayer
・AtanhLayer
・ErfLayer
・GeluLayer
◎Elementwise Binary with Broadcasting Support
・EqualLayer
・NotEqualLayer
・LessThanLayer
・LessEqualLayer
・GreaterThanLayer
・GreaterEqualLayer
・LogicalOrLayer
・LogicalXorLayer
・LogicalNotLayer
・LogicalAndLayer
・ModBroadcastableLayer
・MinBroadcastableLayer
・MaxBroadcastableLayer
・AddBroadcastableLayer
・PowBroadcastableLayer
・DivideBroadcastableLayer
・FloorDivBroadcastableLayer
・MultiplyBroadcastableLayer
・SubtractBroadcastableLayer
◎Tensor Manipulations
・TileLayer
・StackLayer
・GatherLayer
・ScatterLayer
・GatherNDLayer
・ScatterNDLayer
・SoftmaxNDLayer
・GatherAlongAxisLayer
・ScatterAlongAxisLayer
・ReverseLayer
・ReverseSeqLayer
・SplitNDLayer
・ConcatNDLayer
・TransposeLayer
・SliceStaticLayer
・SliceDynamicLayer
・SlidingWindowsLayer
・TopKLayer
・ArgMinLayer
・ArgMaxLayer
・EmbeddingNDLayer
・BatchedMatMulLayer
◎Tensor Allocation / Reshape sort of operations
・GetShapeLayer
・LoadConstantNDLayer
・FillLikeLayer
・FillStaticLayer
・FillDynamicLayer
・BroadcastToLikeLayer
・BroadcastToStaticLayer
・BroadcastToDynamicLayer
・SqueezeLayer
・ExpandDimsLayer
・FlattenTo2DLayer
・ReshapeLikeLayer
・ReshapeStaticLayer
・ReshapeDynamicLayer
・RankPreservingReshapeLayer
◎Random Distributions
・RandomNormalLikeLayer
・RandomNormalStaticLayer
・RandomNormalDynamicLayer
・RandomUniformLikeLayer
・RandomUniformStaticLayer
・RandomUniformDynamicLayer
・RandomBernoulliLikeLayer
・RandomBernoulliStaticLayer
・RandomBernoulliDynamicLayer
・CategoricalDistributionLayer
◎Reduction related Layers:
・ReduceL1Layer
・ReduceL2Layer
・ReduceMaxLayer
・ReduceMinLayer
・ReduceSumLayer
・ReduceProdLayer
・ReduceMeanLayer
・ReduceLogSumLayer
・ReduceSumSquareLayer
・ReduceLogSumExpLayer
◎Masking / Selection Layers
・WhereNonZeroLayer
・MatrixBandPartLayer
・LowerTriangularLayer
・UpperTriangularLayer
・WhereBroadcastableLayer
◎Normalization Layers
・LayerNormalizationLayer
この記事が気に入ったらサポートをしてみませんか?