AIソフトウェアメーカーのExplosionは、オープンソースの自然言語処理(NLP)ライブラリであるspaCyのバージョン3.0を発表した。新しいリリースには、最先端のTransformerベースのパイプラインと17言語用の事前トレーニング済みモデルが含まれている。
リリースはExplosionのブログで発表された。新しいバージョンは、spaCyの事前トレーニング済みモデルに加えて、カスタムPyTorchとTensorFlowモデルとHuggingFace Transformerライブラリとの相互運用性も提供する。カスタムモデルをトレーニングするために、spaCyは新しいワークフローと構成定義システムを導入し、Rayを使用した分散トレーニングをサポートする。プロジェクト定義システムにより、FastAPIなどのサードパーティツールと簡単に統合して、本番環境でモデルを提供できる。Explosionチームは次のように述べている。
このリリースの主な目的は、独自のモデル、特にトランスフォーマーなどの最先端のモデルを簡単にspaCyに取り込むことです。
Explosionは、2015年にspaCyのアルファ版リリースを発表し、翌年にはバージョン1.0を発表した。バージョン2.0は2017年にリリースされ、いくつかの言語用に事前トレーニングされた畳み込みニューラルネットワーク(CNN)モデルが含まれていた。その同じ年に、Transformersに関するGoogleの画期的な論文が公開された。翌年、GoogleはBERTモデルをリリースした。これにより、Transformerのディープラーニングアーキテクチャが広く採用され、NLP領域で最新の結果が得られた。
spaCyを使用する際の重要な概念は処理パイプラインである。つまり、品詞(POS)タグ付けや固有表現抽出(NER)などの入力テキストに対して実行される一連のNLP操作である。新しいバージョンのspaCyには、HuggingFaceライブラリなどのサードパーティモデルをラップできるTransformerパイプラインコンポーネントが含まれている。このリリースには、事前に構築されたTransformerベースのパイプラインもいくつか含まれている。これは、英語用、ドイツ語用、スペイン語用、フランス語用、中国語用である。これらのモデルは、いくつかのタスクで最先端に近いパフォーマンスを実現する。たとえば、英語モデルのPOSタガーの精度は97.8%であるが、主要モデルの精度は97.96%である。Transformerを使用しない事前トレーニング済みのパイプラインは、他にも10の言語で利用できる。
画像ソース: https://spacy.io/usage/processing-pipelines
このリリースでは、カスタムspaCyパイプラインをトレーニングするための新しい設定システムが導入されている。すべての設定情報は、単一の構成ファイルに保存される。このファイルには、トレーニングに必要なすべてのパラメーターが明確に含まれており、非表示のデフォルトはない。目標は、すべての構成の文書化と変更の追跡を容易にすることである。構成システムは、TensorFlow、PyTorch、MXNetなどのディープラーニングフレームワークからのカスタムコンポーネントのインポートもサポートしている。このリリースには、プロジェクト定義システムも含まれている。それは、エンドツーエンドの機械学習ワークフローと、分散トレーニング用のRayやモデル提供アプリをホストするためのFastAPIなどの他のツールとの統合を管理するものである。
Explosionチームは「重大な変更を最小限に抑える」ことを試みたが、リリースには互換性がないものがいくつか含まれる。まず、spaCy 3.0はPython 2のサポートを終了した。サポートされているPythonの最小バージョンは3.6である。削除されたAPIもいくつかあるが、ほとんどはしばらくの間非推奨として存在する。リリースドキュメントには、新しいバージョンにアップグレードするユーザ向けの移行ガイドが含まれている。
何人かのユーザは、Hacker Newsの新しいリリースについての議論でspaCyを賞賛した。あるユーザは、新しいバージョンは「実質的にNLPユースケースの90%を[最先端]に近いパフォーマンスでカバーしている」と述べた。Explosionの共同創設者でspaCyの開発者であるMatthew Honnibal氏もディスカッションに参加した。ライブラリの採用に関するあるユーザの質問に応えて、彼は次のように述べた。
全体として、私たちが取り組んでいるテーマは、開発中に使用するワークフローを実際に出荷できるものと共にラインアップすることの支援です....とはいえ...主な目標がモデルの開発である場合は、実験を行い、論文を発表してください。spaCyがあなたの作業を楽にするほどのことをしていないことに気付くかもしれません。