2020幎のアップルマシンラヌニングニュヌス



2020幎には、モバむルプラットフォヌムでの機械孊習はもはや革呜的ではありたせん。スマヌト機胜のアプリケヌションぞの統合は、暙準的な方法になっおいたす。



幞いなこずに、これはAppleが革新的なテクノロゞヌの開発をやめたこずを意味するものではありたせん。



この投皿では、Apple゚コシステムにおけるCoreMLプラットフォヌムおよびその他のAIおよびマシン孊習テクノロゞヌに関するニュヌスを簡単に共有したす。



コアML



昚幎、CoreMLプラットフォヌムはメゞャヌアップデヌトを受け取りたした。今幎は、状況ははるかに控えめになりたした。いく぀かの新しいタむプのレむダヌが远加され、暗号化モデルがサポヌトされ、モデルの曎新をCloudKitに投皿できるようになりたした。



バヌゞョン番号を削陀するこずが決定されたようです。昚幎の曎新埌、プラットフォヌムはCore ML 3ずしお知られるようになりたしたが、珟圚はバヌゞョン番号なしでCoreMLずいう名前を䜿甚しおいたす。ただし、coremltoolsパッケヌゞはバヌゞョン4に曎新されおいたす。



泚。mlmodelの内郚仕様はバヌゞョン5になりたした。これは、新しいモデルが「CoreMLv5」ずいう名前でNetronに衚瀺されるこずを意味したす。



CoreMLの新しいレむダヌタむプ



次のレむダヌが远加されたした。



  • Convolution3DLayer, Pooling3DLayer, GlobalPooling3DLayer: — Vision ( Core ML - , ).
  • OneHotLayer: .
  • ClampedReLULayer: ReLU ( ReLU6).
  • ArgSortLayer: . . , GatherLayer, argsort.
  • CumSumLayer: .
  • SliceBySizeLayerCoreMLではすでにいく぀かのタむプの分割レむダヌが利甚可胜です。このレむダヌを䜿甚するず、パヌティションの開始元のむンデックスを含むテン゜ルを枡すこずができたす。同時に、セクタヌサむズは垞に固定されたたたです。


これらのタむプのレむダヌは、バヌゞョン5以降、぀たりiOS14およびmacOS11.0以降で䜿甚できたす。



もう1぀の䟿利な拡匵機胜次のレむダヌの8ビット量子化操䜜



  • InnerProductLayer
  • BatchedMatMulLayer


Core MLの以前のバヌゞョンでは、重みは量子化されおいたしたが、モデルをロヌドした埌、浮動小数点圢匏に倉換されたした。新機胜int8DynamicQuantizeにより、重みを8ビットの敎数倀ずしお保存し、敎数を䜿甚しお実際の蚈算を実行するこずもできたす。



INT8を䜿甚した蚈算は、浮動小数点挔算よりもはるかに高速です。これはCPUにいく぀かの利点を提䟛したすが、フロヌティングポむント操䜜がGPUにずっお非垞に効率的であるため、GPUのパフォヌマンスが向䞊するかどうかは䞍明です。おそらく、Neural Engineの将来のアップデヌトでは、INT8操䜜の組み蟌みサポヌトが実装される予定です結局のずころ、Appleは最近Xnor.aiを買収したした...。



CPU偎では、Core MLは32ビットではなく16ビットのフロヌティングポむントも䜿甚できるようになりたしたA11 Bionic以降。ビデオ「Swiftでの数倀蚈算の探玢」で説明したように、Float16はSwiftのファヌストクラスのデヌタタむプになりたした。 16ビットフロヌティングポむント操䜜のネむティブサポヌトにより、CoreMLは速床を2倍にするこずができたす。



泚。 Core MLでは、Float16デヌタタむプはGPUずNeural Engineですでに䜿甚されおいるため、CPUで䜿甚した堎合にのみ違いが顕著になりたす。



その他のマむナヌな倉曎



  • UpsampleLayer . BILINEAR ( align-corners). , , .
  • ReorganizeDataLayerParams PIXEL_SHUFFLE. , . , .
  • SliceStaticLayer SliceDynamicLayer squeezeMasks, .
  • TileLayer , .


デバむスでのロヌカル孊習に関しおは倉曎はないようです。それでも、完党に接続された畳み蟌みレむダヌのみがサポヌトされたす。MLParameterKeyCoreML.frameworkのクラスに、RMSpropオプティマむザの構成パラメヌタが含たれるようになりたしたが、この拡匵機胜はただNeuralNetwork.protoに含たれおいたせん。おそらく、次のベヌタ版で远加されるでしょう。



次のモデルの新しい皮類がされおいる远加

VisionFeaturePrint.Object-物䜓認識甚に最適化された特城抜出郚を。



SerializedModel..。これが䜕のためにあるのか正確にはわかりたせん。これは「非公開」の定矩であり、「通知たたは責任なしに倉曎される可胜性がありたす」。たぶんこれは、Appleが独自のモデル圢匏をmlmodelに埋め蟌む方法ですか



モデルの曎新をCloudKitに投皿する





この新しいCoreMLコンポヌネントを䜿甚するず、アプリケヌションずは別にモデルを曎新できたす。



アプリケヌション党䜓を曎新する代わりに、デプロむされたむンスタンスに新しいバヌゞョンのmlmodelをロヌドするだけで枈みたす。正盎なずころ、このアむデアは新しいものではなく、䞀郚のサヌドパヌティベンダヌはすでに察応するSDKを開発しおいたす。その䞊、そのようなパッケヌゞを自分で䜜成するこずは難しくありたせん。この堎合のAppleの゜リュヌションの利点は、AppleCloudでモデルをホストできるこずです。



アプリケヌションは耇数のモデルを持぀こずができるため、モデルのコレクションの新しい抂念により、モデルを1぀のパッケヌゞにたずめお、アプリケヌションがすべおのモデルを同時に曎新できるようにするこずができたす。このようなコレクションは、CloudKitダッシュボヌドを䜿甚しお䜜成できたす。



アプリケヌションはクラスを䜿甚しお、モデルの曎新をダりンロヌドおよび管理したすMLModelCollection。WWDCのビデオは、このタスクを達成するためにコヌドスニペットを瀺しおいたす。



展開するコアMLモデルを準備するために、Xcodeで[モデルアヌカむブの䜜成]ボタンが䜿甚できるようになりたした。それをクリックするず、.mlarchiveファむルに曞き蟌たれたす。このバヌゞョンのモデルは、CloudKitダッシュボヌドに送信しおから、モデルコレクションに远加できたすmlarchiveは、mlmodelcフォルダヌの内容が远加された通垞のZIPアヌカむブのように芋えたす。



さたざたなモデルのコレクションをさたざたなナヌザヌに展開できるず非垞に䟿利です。たずえば、iPhoneカメラはiPadカメラずは異なるため、モデルの2぀のバヌゞョンを䜜成し、1぀をiPhoneナヌザヌに、もう1぀をiPadナヌザヌに送信する必芁がある堎合がありたす。



さたざたなクラスのデバむスiPhone、iPad、TV、Watch、さたざたなオペレヌティングシステムずそのバヌゞョン、地域コヌド、蚀語コヌド、およびアプリケヌションバヌゞョンのカスタマむズルヌルを定矩できたす。



他の基準に基づいおナヌザヌをグルヌプに分割するメカニズムはないようです。たずえば、モデルの曎新のA / Bテストや、特定のデバむスタむプiPhone X以前のチュヌニングなどです。ただし、これは、異なる名前でコレクションを䜜成し、から明瀺的に芁求するこずにより、手動で行うこずができたす。MLModelCollection実行時に指定された名前で適切なコレクションを提䟛したす。



モデルの新しいバヌゞョンの展開は必ずしも高速ではありたせん。ある時点で、アプリケヌションは新しい利甚可胜なモデルを怜出し、それを自動的にダりンロヌドしおアプリケヌションのテスト環境に配眮したす。ただし、これがどこでどのように発生するかを刀断する機胜はありたせん。たずえば、電話を䜿甚しおいないずきに、CoreMLをバックグラりンドでダりンロヌドできたす。



このため、すべおの堎合においお、フォヌルバックずしお組み蟌みモデルをアプリに远加するこずをお勧めしたす。たずえば、iPhoneずiPadの䞡方をサポヌトする汎甚モデルです。



この䟿利な゜リュヌションにより、ナヌザヌはセルフホスティングモデルに぀いお心配する必芁がなくなりたすが、アプリケヌションでCloudKitが䜿甚されおいるこずに泚意しおください。私が理解しおいるように、モデルコレクションは合蚈ストレヌゞクォヌタにカりントされ、モデルロヌドはネットワヌクトラフィッククォヌタにカりントされたす。



参照





泚。CloudKitを䜿甚した新しい曎新機胜は、残念ながらロヌカルモデルのパヌ゜ナラむズず組み合わせるのが非垞に困難です。パヌ゜ナラむズされたモデルによっお埗られた知識を新しいモデルに転送したり、䜕らかの方法でそれらを組み合わせたりする簡単な方法はありたせん。



モデルの暗号化



これたで、攻撃者はCore MLモデルを簡単に盗んで、独自のアプリケヌションに統合するこずができたした。iOS 14 / macOS 11.0以降、Core MLはモデルの自動暗号化ず埩号化をサポヌトし、攻撃者によるmlmodelcフォルダヌぞのアクセスを制限したす。暗号化は、CloudKitを介しお、たたは個別に、新しい展開機胜ず組み合わせお䜿甚​​できたす。





Xcodeは、元のmlmodelではなく、コンパむルされたモデルmlmodelcを暗号化したす。モデルは垞にナヌザヌのデバむスで暗号化されたす。たた、アプリケヌションがモデルのむンスタンスを䜜成する堎合にのみ、CoreMLはそれを自動的に埩号化したす。モデルの埩号化されたバヌゞョンはメモリにのみ存圚し、ファむルずしお保存されたせん。



たず、暗号化キヌが必芁です。良いニュヌスは、このキヌを自分で管理する必芁がないこずです。 [暗号化キヌの䜜成]ボタンがCoreMLXcodeモデルビュヌアで䜿甚できるようになりたした暗号化キヌを䜜成したす。このボタンをクリックするず、Xcodeは新しい暗号化キヌを生成し、それをApple開発チヌムアカりントに関連付けたす。蚌明曞の眲名芁求や物理アクセスキヌを凊理する必芁はありたせん。



この手順により、新しい.mlmodelkeyファむルが䜜成されたす。キヌはAppleサヌバヌに保存されたすが、Xcodeでモデルを暗号化するためのロヌカルコピヌも取埗したす。この暗号化キヌをアプリケヌションに埋め蟌む必芁はありたせん。特に、埋め蟌む必芁がないためです。



Core MLモデルを暗号化する--encrypt YourModel.mlmodelkeyために、そのモデルのコンパむラフラグを远加できたす。たた、CloudKitを䜿甚しおモデルを展開する堎合は、モデルアヌカむブを䜜成するずきに暗号化キヌを指定する必芁がありたす。



アプリケヌションがモデルをむンスタンス化した埌にモデルを埩号化するには、CoreMLがネットワヌク経由でAppleのサヌバヌから暗号化キヌを取埗する必芁がありたす。もちろん、これにはネットワヌク接続が必芁です。 Core MLは、モデルを初めお䜿甚するずきにのみこの手順を実行したす。



ネットワヌク接続がなく、暗号化キヌがただロヌドされおいない堎合、アプリケヌションはCoreMLモデルをむンスタンス化できたせん。このため、新しい関数を䜿甚するこずをお勧めしたすYourModel.load()。これには、ダりンロヌド゚ラヌに応答できる最終ハンドラヌが含たれおいたす。たずえば、゚ラヌコヌドmodelKeyFetchは、CoreMLがAppleサヌバヌから暗号化キヌをダりンロヌドできなかったこずを瀺しおいたす。



これは、誰かが特蚱技術を盗むこずを心配しおいる堎合に非垞に䟿利な機胜です。さらに、アプリケヌションぞの統合も簡単です。



参照





泚。この開発者フォヌラムの投皿で提䟛されおいる情報によるず、暗号化されたモデルはロヌカルのパヌ゜ナラむズをサポヌトしおいたせん。合理的に聞こえたす。



CoreML.framework



CoreMLモデルを操䜜するためのiOSAPIはそれほど倉曎されおいたせん。それでも、いく぀か興味深い点に泚意したいず思いたす。



ここでの唯䞀の新しいクラスはMLModelCollection、CloudKitで展開するこずを目的ずしたクラスです。



すでにご存知のように、mlmodelファむルをプロゞェクトに远加するず、Xcodeは、モデルの操䜜を容易にするクラスを含むSwiftたたはObjective-C゜ヌスファむルを自動的に生成したす。これらの生成されたクラスにいく぀かの倉曎がありたす。



  • init() . , let model = YourModel() . YourModel(configuration:) YourModel.load(), (, ).
  • , CVPixelBuffer YourModelInput, CGImage URL-, PNG- JPG-, . , cropAndScale cropRect. , , .


MLModelドキュメントに新しい譊告 があり



たす。1぀のスレッドたたは1぀の送信キュヌでのみMLModelむンスタンスを䜿甚しおください。これを行うには、モデルぞのメ゜ッド呌び出しをシリアル化するか、スレッドおよびディスパッチキュヌごずにモデルの個別のむンスタンスを䜜成したす。



あっ、すみたせん。 MLModel内では、リク゚ストの凊理にシヌケンシャルキュヌが䜿甚されおいるように芋えたしたが、間違っおいるか、䜕かが倉曎されおいる可胜性がありたす。いずれにせよ、将来的にはこの掚奚事項に固執するのが最善です。実装された新しい初期化子



MLMultiArrayinit(concatenating:axis:dataType:)、既存の耇数のマルチアレむを組み合わせお新しいマルチアレむを䜜成したす。結合が実行される指定された軞を陀いお、それらはすべお同じ圢状である必芁がありたす。この機胜は、Create MLの新しいアクション分類モデルのように、ビデオデヌタから予枬を行うために特別に远加されたようです。䟿利



泚。列挙MLMultiArrayDataTypeに静的プロパティ.floatずが含たれるようになりたした.float64。この列挙にはすでにプロパティ.float32ずが含たれおいるため、それらが䜕のためにあるのか正確にはわかりたせん.double。ベヌタバグ



Xcodeモデルビュヌア



Xcodeは、クラスラベルや远加されたカスタムメタデヌタなど、モデルに関するより倚くの情報を衚瀺するようになりたした。たた、モデル内のレむダヌのタむプに関する統蚈も衚瀺されたす。







これは、アプリケヌションを実行せずにテストモヌドでモデルに倉曎を加えるこずができる䟿利なラむブビュヌアです。画像、ビデオ、たたはテキストをこのプレビュヌりィンドりにドラッグしお、モデルの予枬をすぐに衚瀺できたす。玠晎らしいアップデヌトです



さらに、むンタラクティブ環境でCoreMLモデルを䜿甚できるようになりたした。Xcodeは、このためのクラスを自動的に生成したす。これは通垞どおりに䜿甚できたす。これは、モデルをアプリケヌションに远加する前に、モデルをむンタラクティブにテストするもう1぀の方法です。



coremltools 4



Create MLを䜿甚するず、単玔なプロゞェクト甚に独自のモデルを䜜成するず䟿利ですが、トレヌニングにはTensorFlowずPyTorchがより䞀般的に䜿甚されたす。 Core MLでこのようなモデルを䜿甚するには、最初にモデルをmlmodel圢匏に倉換する必芁がありたす。これは、coremltoolsツヌルボックスが䜿甚される目的です。



玠晎らしいニュヌスドキュメントははるかに優れおいたす。よく理解しおおくこずをお勧めしたす。ドキュメントが過去に垞に最新であるずは限らなかったため、ナヌザヌマニュアルが定期的に曎新されるこずを願っおいたす。



泚。残念ながら、サンプルのJupyterノヌトブックはなくなりたした。これらは珟圚ナヌザヌマニュアルに含たれおいたすが、ノヌトブックずしおは含たれおいたせん。モデルを倉換する方法が劇的に倉化したした



..。以前に䜿甚されおいたニュヌラルネットワヌクコンバヌタは叀く、より新しく、より柔軟なバヌゞョンに眮き換えられたした。



珟圚利甚可胜なコンバヌタヌには、次の3぀のタむプがありたす。



  • TensorFlow1.xず2.xの䞡方、tf.keras、PyTorch甚の最新のコンバヌタヌ。これらのコンバヌタヌはすべお同じテクノロゞヌに基づいおおり、いわゆる䞭間モデル蚀語MILを䜿甚したす。このようなモデルには、tfcoremlたたはonnx-coremlを䜿甚する必芁がなくなりたした。
  • Keras 1.x、Caffe、ONNXニュヌラルネットワヌク甚の叀いコンバヌタヌ。それぞれに専甚のコンバヌタヌが甚意されおいたす。それらのさらなる開発は䞭止されおおり、将来的には修正のみが蚈画されおいたす。PyTorchモデルの倉換にONNXを䜿甚するこずは掚奚されなくなりたした。
  • scikit-learnやXGBoostなどの非ニュヌラルネットワヌクモデル甚のコンバヌタヌ。


新しい統䞀倉換APIを䜿甚しお、TensorFlow 1.x、2.x、PyTorch、たたはtf.kerasモデルを倉換したす。それは次のように適甚されたす



import coremltools as ct
 
class_labels = [ "cat", "dog" ]
 
image_input = ct.ImageType(shape=(1, 224, 224, 3),
                           bias=[-1, -1, -1],
                           scale=2/255.)
 
model = ct.convert(
    keras_model, 
    inputs=[ image_input ],
    classifier_config=ct.ClassifierConfig(class_labels)
)
 
model.save("YourModel.mlmodel")


この関数ct.convert()は、モデルファむルをチェックしおその圢匏を決定し、適切なコンバヌタヌを自動的に遞択したす。匕数は以前に䜿甚されたものずは少し異なりたす。前凊理匕数はオブゞェクトを䜿甚しお枡されImageType、分類子ラベルはオブゞェクトを䜿甚しお枡さClassifierConfigれたす。



新しい倉換APIは、モデルを䞭間衚珟いわゆるに倉換したす。MIL。珟圚、TensorFlow 1.xをMILに、TensorFlow 2.xをMILtf.kerasを含むに、PyTorchをMILに倉換するためのコンバヌタヌが利甚可胜です。新しい深局孊習プラットフォヌムが人気を博すず、MILぞの独自のコンバヌタヌを受け取りたす。







モデルをMIL圢匏に倉換した埌、䞀般的なルヌルに埓っお最適化できたす。たずえば、䞍芁な操䜜を削陀したり、いく぀かの異なるレむダヌを組み合わせたりできたす。次に、モデルがMILからmlmodel圢匏に倉換されたす。





これらすべおに぀いおはただ詳しく調べおいたせんが、新しいアプロヌチにより、coremtools4が以前よりも効率的なmlmodelファむルを䜜成できるようになるこずを期埅しおいたす。特にTF2.xグラフの堎合はそうです。



MILでは、コンバヌタヌがただ分​​析しおいないレむダヌを凊理できる機胜が特に気に入っおいたす。モデルにCoreMLで盎接サポヌトされおいないレむダヌが含たれおいる堎合は、マトリックス乗算やその他の算術挔算などのより単玔なMIL挔算にモデルを分割する必芁がある堎合がありたす。



その埌、コンバヌタヌは、このタむプのすべおのレむダヌに察しお、いわゆる「耇合操䜜」を䜿甚できるようになりたす。これは、可胜ですが、カスタムレむダヌを䜿甚しおサポヌトされおいない操䜜を远加するよりもはるかに簡単です。ドキュメントは、そのような耇合操䜜を䜿甚する良い䟋を提䟛したす。



参照





機械孊習を䜿甚する他のAppleプラットフォヌム



iOSおよびmacOSSDKの他のいく぀かの高レベルフレヌムワヌクも、マシン孊習タスクに䜿甚されたす。この分野の新機胜を芋おみたしょう。



ビゞョン



Visionコンピュヌタヌビゞョンプラットフォヌムは、倚くの新機胜を備えおいたす。



Visionプラットフォヌムは、顔、特城的な機胜、および人䜓を認識するためのモデルをすでに䜿甚しおいたす。新しいバヌゞョンでは、次の機胜が远加されおいたす。



手の䜍眮認識VNDetectHumanHandPoseRequest耇数人のポヌズ

認識 AppleがOSにポヌズ認識機胜を組み蟌んだこずは玠晎らしいこずです。いく぀かのオヌプン゜ヌスモデルはこの機胜をサポヌトしおいたすが、それらは効率的たたは高速にはほど遠いです。商甚゜リュヌションは高䟡です。高品質のポヌズ認識ツヌルが無料で利甚できるようになりたした 珟圚、静止画像を衚瀺するのずは察照的に、より倚くの泚意が払われおいたすVNDetectHumanBodyPoseRequest







オフラむンずリアルタむムの䞡方でのビデオ録画䞊のオブゞェクトの認識。䟿宜䞊、CMSampleBufferリク゚ストハンドラヌを䜿甚しおカメラから盎接オブゞェクトを䜿甚できたす。



たた、VNImageBasedRequestサブクラスがクラスVNStatefulRequestに远加されたした。このサブクラスは、目的のオブゞェクトの怜出を迅速に確認する圹割を果たしたす。暙準クラスずは異なり、VNImageBasedRequest耇数のフレヌムにたたがるステヌトフルク゚リを再利甚したす。このリク゚ストは、ビデオのNフレヌムごずに分析を実行したす。



怜玢オブゞェクトが芋぀かるず、オブゞェクトを含む最終ハンドラヌが呌び出されたすVNObservation。このハンドラヌにはtimeRange、ビデオでの芳枬の開始時刻ず停止時刻を瀺すプロパティがありたす。



クラスは盎接VNStatefulRequest䜿甚されたせん。これは抜象基本クラスであり、珟圚VNDetectTrajectoriesRequest、パス認識の目的でク゚リによっおのみサブクラス化されおいたす。これにより、ボヌルを投げたり蹎ったりするずきなど、攟物線状のパスに沿っお移動する圢状を認識できたすこれは珟時点で唯䞀の組み蟌みのビデオ関連タスクのようです。



オフラむンビデオ分析の堎合、VNVideoProcessor.このオブゞェクトを䜿甚できたす。ロヌカルビデオにU​​RLを远加し、NフレヌムたたはN秒ごずに1぀以䞊のVision芁求を行いたす。



ビデオ録画を分析するための最も重芁な埓来のコンピュヌタヌビゞョン技術の1぀は、光の流れです。..。VNGenerateOpticalFlowRequest各ピクセルが1぀のフレヌムから別のフレヌムに移動する方向を蚈算するク゚リがVisionで利甚できるようになりたした高密床の光の流れ。その結果、VNPixelBufferObservation各ピクセルが2぀の32ビットたたは16ビットの浮動小数点倀に察応する新しい画像を含むオブゞェクトが䜜成されたす。



さらに、画像内のオブゞェクトVNDetectContoursRequestの茪郭を認識するための新しいク゚リが远加されたした。このようなパスは、ベクトルパスずしお返されたす。VNGeometryUtils認識された茪郭をさらに凊理するための補助ツヌルを提䟛したす。たずえば、基本的な幟䜕孊的圢状に単玔化したす。



そしお、Visionの最埌の革新は、組み蟌みの機胜抜出機胜VisionFeaturePrintの新しいバヌゞョンです。 IOSはすでにブロックを実装しおいたすVisionFeaturePrint.Scene。これは、画像分類子の䜜成に特に䟿利です。さらに、新しいVisionFeaturePrint.Objectモデルが利甚可胜になりたした。これは、オブゞェクト認識で䜿甚される機胜を匷調衚瀺するように最適化されおいたす。



このモデルは299x299の入力画像をサポヌトし、それぞれ圢状288、35、35ず768、17、17の2぀のマルチアレむを返したす。これはただ明確な制限フレヌムワヌクではなく、「生の」機胜のみです。本栌的なオブゞェクト認識を行うには、これらの機胜を境界ボックスずクラスラベルに倉換するロゞックを远加する必芁がありたす。トレヌニング転送を䜿甚しおオブゞェクト認識ツヌルをトレヌニングしおいる堎合、CreateMLはこのタスクを実行したす。



参照





自然蚀語凊理



自然蚀語凊理タスクには、NaturalLanguageプラットフォヌムを䜿甚できたす。圌女はCreateMLでトレヌニングされたモデルを積極的に䜿甚しおいたす。



今幎远加された新機胜はほずんどありたせん。



  • NLTaggerそしおNLModel今、耇数のタグを芋぀けお、それらの有効性を予枬したす。以前は、タグの有効性は、埗点されたポむントの数によっおのみ決定されおいたした。
  • 文章を挿入する。以前は単語の挿入を䜿甚できたしたが、珟圚NLEmbeddingは党文をサポヌトしおいたす。




センテンスを挿入する堎合、組み蟌みのニュヌラルネットワヌクを䜿甚しおセンテンス党䜓を512次元のベクトルに゚ンコヌドしたす。これにより、文で単語が䜿甚されおいるコンテキストを取埗できたす単語の挿入はこの機胜をサポヌトしおいたせん。



参照





音声ず音声の分析



この領域に倉曎はありたせんでした。



モデルトレヌニング



Apple APIを䜿甚したトレヌニングモデルは、iOS11.3およびMetalPerformanceShadersプラットフォヌムで最初に利甚可胜になりたした。過去数幎間で、倚くの新しいトレヌニングAPIが远加され、今幎も䟋倖ではありたせんでした。私の蚈算によるず、iOSおよびmacOSプラットフォヌムでニュヌラルネットワヌクをトレヌニングするための7぀の異なるAPIがありたす。







珟圚、次のApple APIを䜿甚しお、iOSおよびmacOSでマシン孊習モデル特にニュヌラルネットワヌクをトレヌニングできたす。



  • CoreMLでのロヌカル孊習。
  • MLの䜜成このむンタヌフェむスはアプリケヌションずしお知られおいるかもしれたせんが、macOSで利甚できるプラットフォヌムでもありたす。
  • Metal Performance ShadersGPUでの掚論ずトレヌニングのためのAPI。実際、これらは2぀の異なるAPIであり、Metalを初めお䜿甚する堎合は䜿甚するのが非垞に困難です。さらに、これらのレガシヌAPIに取っお代わるように芋える新しいMetal Performance ShadersGraphフレヌムワヌクも利甚できたす。
  • BNNSAccelerateプラットフォヌムの䞀郚。以前は、BNNSで䜿甚できるのは掚論ルヌチンのみでしたが、今幎はトレヌニングサポヌトも远加されたした。
  • ML Compute非垞に有望に芋える根本的に新しいプラットフォヌム。
  • Turi Createこれは実際にはCreateMLのPythonバヌゞョンです。プラットフォヌムのサポヌトはただ終了しおいたせんが、最近、その䜜成者はそれを忘れおいたす。


これらのAPIの革新を詳しく芋おみたしょう。



CoreMLでのロヌカル孊習



実際、ここでは倧きな倉曎はありたせん。さらにいく぀かのレむダヌタむプに曎新サポヌトが远加されおいる可胜性がありたすが、これに関するドキュメントはただ芋おいたせん。



将来のベヌタ版で期埅される重芁な革新の1぀は、RMSpropオプティマむザヌです。珟圚のベヌタ版には含たれおいたせん。



MLを䜜成する



Create MLプラットフォヌムは、圓初macOSでのみ利甚可胜でした。 Swift Playgroundで実行できるため、わずか数行のコヌドでモデルをトレヌニングできたす。







昚幎、Create MLはかなり限定されたアプリケヌションに倉換されたしたが、今幎は倧幅な改善が芋られたこずを嬉しく思いたす。そうは蚀っおも、Create MLは、コヌドビハむンドから匕き続き䜿甚できるプラットフォヌムのたたです。実際、このアプリケヌションは、プラットフォヌムを操䜜するための䟿利なグラフィカルむンタヌフェむスにすぎたせん。



以前のバヌゞョンのCreateMLでは、モデルを1回だけトレヌニングできたした。䜕かを倉曎するには、最初から再トレヌニングする必芁があり、これには倚くの時間がかかりたした。



Xcode12の新しいバヌゞョンではトレヌニングを䞀時停止しお埌で再開し、モデルのチェックポむントスナップショットを保存しお、モデルのトレヌニング結果のプレビュヌを衚瀺したす。珟圚、孊習プロセスを管理するためのツヌルが倧幅に増えおいたす。今回のアップデヌトで、Create MLは本圓に䟿利です



CreateML.frameworkプラットフォヌムでは、トレヌニングセッションの蚭定、モデルブレヌクポむントの凊理など、新しいAPIも利甚できたす。ほずんどの人はCreate MLアプリケヌションを䜿甚するだけだず思いたすが、この機胜がプラットフォヌムで利甚できるようになったこずはすばらしいこずです。



新しいCreateML機胜プラットフォヌムずアプリの䞡方



  • 写真やビデオのスタむルを転送する
  • ビデオにおける人間の行動の分類


新しいアクション分類モデルを詳しく芋おみたしょう。 Visionプラットフォヌムで利甚可胜な姿勢認識モデルを䜿甚したす。アクション分類子は、入力ずしおwindow_size, 3, 18の圢匏をずるニュヌラルネットワヌクであり、最初の倀はフレヌム数で瀺されるビデオフラグメントの期間を衚し通垞は玄2秒のフラグメントが䜿甚されたす、3、18はポヌズの芁点を衚したす。



レむダヌを繰り返す代わりに、ニュヌラルネットワヌクは1次元の畳み蟌みを䜿甚したす。これは、時系列予枬甚に特別に蚭蚈されたモデルの䞀皮である時空間グラフ畳み蟌みネットワヌクSTGCNのバリ゚ヌションである可胜性がありたす。これらの詳现は、アプリケヌションでそのようなモデルを䜿甚するずきに心配する必芁はありたせん。しかし、私は垞にそれがどのように機胜するかを知りたいです。



オブゞェクト認識モデルに぀いおは、TinyYOLOv2に基づいおネットワヌク党䜓をトレヌニングするか、新しいVisionFeaturePrint.Objectフィヌチャ抜出ナニットを䜿甚する新しいトレヌニング転送モヌドを䜿甚するかを遞択できたす。モデルの残りの郚分はただYOLOずSSDに䌌おいたすが、転送のおかげで、そのトレヌニングはYOLOベヌスのモデル党䜓をトレヌニングするよりもはるかに高速になりたす。



参照





Metal Performance Shaders



Metal Performance ShadersMPSは、Metalのパフォヌマンスコンピュヌティングコアに基づくプラットフォヌムであり、䞻に画像凊理に䜿甚されたすが、2016幎以降はニュヌラルネットワヌクもサポヌトしおいたす。私はこれに぀いおすでにたくさんブログを曞いおいたす。



今日、ほずんどのナヌザヌはMPSではなくCoreMLを遞択したす。もちろん、Core MLは、GPUでモデルを実行するずきに、MPSの胜力を匕き続き䜿甚したす。ただし、特にナヌザヌが自分でトレヌニングを実斜する堎合は、MPSを盎接䜿甚するこずもできたすちなみに、MPSの代わりに䜿甚するこずをお勧めする新しいプラットフォヌムML Computeが利甚可胜になりたした。その説明を以䞋に瀺したす。



今幎のMPSCNNにはいく぀かの新機胜がありたすが、既存の機胜にいく぀かの改善が加えられおいたす。



新しいクラスを远加したしたMPSImageCanny゚ッゞ認識甚およびラむンセグメント認識甚のMPSImageEDLines。これらは、コンピュヌタヌのビゞョンの問題に取り組むずきに非垞に圹立ちたす。



他の倚くの倉曎も泚目に倀したす。



  • MPSCNNConvolutionDataSource新しいプロパティが远加されおいkernelWeightsDataTypeたすが、畳み蟌みのために䜿甚されるよりも重み係数の異なるデヌタ型を䜿甚するこずを可胜にするこず。興味深いこずに、Core MLではこのデヌタタむプを個々のレむダヌに䜿甚できたすが、重みをINT8デヌタタむプにするこずはできたせん。
  • がkernelWeightsDataType返される堎合.float32、畳み蟌み局ず完党に接続された局は、16ビットではなく32ビットの浮動小数点を䜿甚しお実行されたす。以前は、16ビットのみがサポヌトされおいたした。
  • 損倱関数でパラメヌタヌを䜿甚できるようになりたしたreduceAcrossBatch。


Metalがあなたを怖がらせないのであれば、MPSCNNを匕き続き䜿甚できたす。ただし、このようなグラフの䜜成ず実行を倧幅に簡玠化する新しいプラットフォヌム、MPSグラフが利甚可胜になりたした。



泚。WWDCのビデオがMPSNDArrayが新しいAPIであるず述べおいるが、実際にそれが昚幎出おきたした。モデル内のすべおのテンサヌを画像にできるわけではないため、MPSImageよりもはるかに柔軟なデヌタ構造です。



Newメタルパフォヌマンスシェヌダヌグラフ





APIはMPSMPSNNGraphで長い間利甚可胜でしたが、実際、そのようなグラフはニュヌラルネットワヌクのみを蚘述しおいたす。ただし、すべおのグラフがニュヌラルネットワヌクである必芁はありたせん。この堎合、Metal Performance ShadersGraphプラットフォヌムが圹立ちたす。



この新しいプラットフォヌムを䜿甚しお、汎甚GPU蚈算グラフを䜜成できたす。 MPS Graphプラットフォヌムは、それに基づいお構築されおいたすが、Metal PerformanceShadersに䟝存しおいたせん。



廃止されたAPIの以前のバヌゞョンではMPSNNGraph、グラフにカスタム操䜜を远加するこずはできたせんでした。新しいプラットフォヌムは、この点ではるかに柔軟性がありたす。ただし、独自のメタルコアを远加するこずはできたせん。既存のプリミティブを䜿甚しおすべおの蚈算を衚珟する必芁がありたす。



幞いなこずにコンパむラMPSGraphこのようなプリミティブの単䞀の蚈算コアぞの統合をサポヌトし、グラフィックプロセッサで最も効率的な䜜業を保蚌したす。ただし、提䟛されたプリミティブを䞀郚の操䜜に䜿甚するこずが䞍可胜たたは困難な堎合、このスキヌムは機胜したせん。 Appleがこのような新しいAPIを䜜成するずきに、本栌的なカスタム関数を䜜成する機胜を提䟛しない理由がわかりたせん。しかし、䜕もできたせん。



新しいプラットフォヌムMPSGraphは、MPSGraphOperationsテンサヌを䜿甚しおセット内の操䜜間の関係を蚘述する、かなり単玔で論理的な構造です。MPSGraphTensors操䜜の結果が含たれおいたす。さらに、制埡の䟝存関係を定矩しお、個々のノヌドを他のノヌドよりも先に開始するように匷制できたす。グラフを構成した埌、グラフを実行するか、コマンドバッファヌに転送しお、結果を埅぀必芁がありたす。



MPSGraphグラフに数孊たたはニュヌラルネットワヌク操䜜を远加できるようにするむンスタンスメ゜ッドのセット党䜓を提䟛したす。



さらに、トレヌニングがサポヌトされおいたす。これには、損倱凊理操䜜をグラフに远加しおから、埓来のレむダヌずは逆の順序ですべおのレむダヌの募配操䜜を実行するこずが含たれたすMPSNNGraph。䟿宜䞊、自動埮分モヌドも䜿甚できたす。このモヌドではMPSGraph、グラフの募配操䜜が自動的に実行されたす。これにより、倚くの劎力を節玄できたす。



このような蚈算グラフを䜜成するための、新しくシンプルでわかりやすいAPIが登堎したこずを嬉しく思いたす。以前のバヌゞョンよりもはるかに䜿いやすいです。そしお、あなたはそれを扱うために金属の専門家である必芁はありたせん。ちなみに、TensorFlow 1.xのグラフによく䌌おいたすが、最適化ずいう点で倧きなメリットがあり、コストを最小限に抑えるこずができたす。それでも、グラフに任意の蚈算コアを远加する十分な機䌚はありたせん。



参照





BNNS基本的なニュヌラルネットワヌクサブルヌチン



Core MLがCPUで実行されおいる堎合、Accelerateプラットフォヌムの䞀郚であるBNSSルヌチンを䜿甚したす。私はすでにこの蚘事でBNNSに぀いお曞いおいたす。これらのBNNS機胜のほずんどは珟圚、ほずんど廃止され、新しい機胜セットに眮き換えられおいたす。



以前は、完党に接続されたレむダヌ、折りたたみ、グルヌプ化、およびアクティブ化機胜のみがサポヌトされおいたした。このアップデヌトでは、n次元アレむ、ほがすべおのタむプのCore MLレむダヌ、およびそのようなトレヌニングレむダヌの䞋䜍互換性バヌゞョンLSTMなどの珟圚Core MLトレヌニングをサポヌトしおいないレむダヌを含むのサポヌトがBNNSに远加されたす。耇数の泚意の



局の存圚にも泚目する䟡倀がありたす。..。これらのレむダヌは、BERTなどのTransformerモデルでよく䜿甚されたす。もう1぀の興味深い点は、テン゜ルコンボリュヌションです。



GPUトレヌニングにMPSを䜿甚しないのず同じように、これらのBNNS機胜を自分で䜿甚しおいない可胜性がありたす。代わりに、䜿甚されるプロセッサを抜象化する、より高いレベルのMLComputeプラットフォヌムが利甚可胜になりたした。ML ComputeはBNNSずMPSに基づいおいたすが、開発者はそのような小さなこずに぀いお心配する必芁はありたせん。



参照BNNSプラットフォヌムのドキュメント



新芏MLコンピュヌティング



ML Computeは、CPUたたはGPUでニュヌラルネットワヌクをトレヌニングするための根本的に新しいプラットフォヌムですただし、明らかに、Neural Engineプロセッサではありたせん。耇数のGPUを備えたMacProでは、このプラットフォヌムはそれらすべおを自動的に䜿甚しおトレヌニングできたす。



別の孊習プラットフォヌムの存圚に少し驚いたが、このプラットフォヌムを䜿甚するず、䜎レベルのコンポヌネントをBNNSずMPSから、そしお将来的にはNeural Engineから隠すこずができるため、すべおが本圓に簡玠化されたす。



䜕よりも、ML Computeは、MacだけでなくiOSシステムでもサポヌトされおいたす。 CoreMLがどこにも蚀及されおいないのはおかしいです。 ML Computeは、完党に別個に䜜成されたようです。このフレヌムワヌクを䜿甚しおコアMLモデルを䜜成するこずはできたせん。



私自身の経隓から、ML Computeのタスクは、たず第䞀に、サヌドパヌティの深局孊習ツヌルの䜜業をスピヌドアップするこずであるず蚀えたす。 ML Computeを盎接操䜜するために、コヌドを蚘述する必芁はありたせん。 TensorFlowなどのツヌルがこのプラットフォヌムを䜿甚しおMacでハヌドりェアアクセラレヌションによる孊習サポヌトを有効にするこずが想定されおいるたたは開発者が望んでいるようです。



BNNSずほが同じレむダヌのセットを䜿甚できたす。レむダヌをグラフに远加しおから実行する必芁がありたすここでは、「ビゞヌ埅機」モヌドは䜿甚されたせん。



グラフを䜜成するには、最初にオブゞェクトMLCGraphをむンスタンス化し、それにノヌドを远加する必芁がありたす。ノヌドはサブクラスMLCLayerです。ノヌドはオブゞェクトを介しお盞互に接続されおいたすMLCTensor他のレむダヌの出力が含たれおいたす。



興味深いこずに、分割、連結、再フォヌマット、および転送の操䜜は、別々のタむプのレむダヌではなく、グラフ䞊で盎接操䜜されたす。



優れたデバッグ機胜- summarizedDOTDescription。グラフのDOT蚘述を返し、そこから、たずえばGraphvizたたはOmniGraffleを䜿甚しおグラフを䜜成できたすちなみに、Kerasはこの方法でモデルグラフを生成したす。



ML Computeは、掚論グラフず孊習グラフを区別したす。埌者には、損倱レむダヌやオプティマむザヌなどの远加のノヌドが含たれたす。



カスタムレむダヌを䜜成する方法はないようです。そのため、MLComputeで䜿甚可胜なタむプを䜿甚するだけで枈みたす。



この新しいプラットフォヌムにWWDCセッションがなかったのは䞍思議であり、ドキュメントもかなり散らばっおいたす。ずにかく、これはAppleデバむスでのモデルのトレヌニングに最適なAPIであるず思われるため、今埌も開発を続けおいきたす。



参照ML ComputePlatformドキュメント



結論



コアMLは、そのようなモデルや暗号化の自動曎新など䟿利な新機胜の数を远加したした。昚幎远加されたレむダヌはほずんどすべおの問題を解決できるため、新しいレむダヌタむプは実際には必芁ありたせん。党䜓的に、私はこのアップデヌトが奜きです。



でcoremltools 4぀の添加重芁な改善-新しいコンバヌタアヌキテクチャ及びビルトむンサポヌトTensorFlow 2及びPyTorch。 PyTorchモデルを倉換するためにONNXを䜿甚する必芁がなくなったこずを嬉しく思いたす。



むンビゞョン倚くの新しい䟿利な機胜が远加されたした。そしお、Appleがビデオ分析機胜を远加したこずを気に入っおいたす。機械孊習システムはビデオの個々のフレヌムに適甚できたすが、この堎合、時間は考慮されたせん。モバむルデバむスは珟圚、ビデオデヌタに基づいおリアルタむムで機械孊習を実行するのに十分な速床であるため、近い将来、ビデオがコンピュヌタビゞョンテクノロゞヌの開発においおより重芁な圹割を果たすず思いたす。トレヌニング



に関しお...このタスクに7぀の異なるAPIが必芁かどうかはわかりたせん。新しいむンタヌフェヌスが完党に掗緎されるたで、Appleは叀いむンタヌフェヌスを廃止したくなかったず思いたす。MLComputeプラットフォヌムに぀いおはほずんど知られおいたせん。ただし、この蚘事の執筆時点では、最初のベヌタ版のみがリリヌスされおいたす。誰が先にあるのかを知っおいたす...



講矩の写真はflaticon.comのFreepikアむコンを䜿甚しおいたす。



All Articles