Generative Modelsエクステンション バージョン2.0のリリースノート
リリース日: 2024年1月19日
重要: 新たなわかりやすいポート名、変更されたPythonパッケージ管理、接続パラメータの代わりに接続オブジェクトを使用するため、このバージョンは以前のバージョンと互換性がなくなりました。以前のバージョンを運用環境で使用している場合、エクステンションをアップグレードすることはお勧めしません。ご迷惑をおかけして申し訳ありませんが、これらの変更を避けることはできませんでした。
改善点
- このエクステンションでは、統一されたシンプルなパッケージ管理が使用され、利便性を考慮した完全な環境定義が提供されるようになりました。ドキュメントに従ってPython環境を正しく設定してください。そうしないと、このエクステンションが機能しません。
重要:rm_genai
環境は、以前にエクステンションを使用したことがある場合でも、ドキュメントに従って再作成する必要があります! - 堅牢性の大幅な向上: プロンプトや行がひとつでも失敗した場合、その特定の結果は「missing」に設定され、他の行はすべて処理されます。以前の動作では、多数のプロンプトのうちわずかなプロンプトが失敗した場合、処理を完全に中断していました。このような誤った行の欠落値に加えて、特定の問題の根本的な原因を指摘するログメッセージも表示されます。
- (Huggingfaceの)ローカルモデルを操作するためのオペレータは、デフォルトですべてのモデルをプロジェクト/リポジトリフォルダに保存するようになりました。これにより、ジョブエージェントが基盤となるファイルシステムにアクセスできないAI Hub上での大規模言語モデルの利用が非常に簡単になります。一時フォルダの使用を含む、ファイルシステムへの保存と読み込みは、対応するストレージタイプの設定で引き続き可能です。
- 新規微調整オペレータのFinetune Text Generation、Finetune Translation、Finetune Text Classificationが追加されました。
- 新規埋め込みオペレータのEmbeddings(FastEmbed) と Embeddings(OpenAI)が追加されました。
埋め込みは、高次元の検索空間でテキストを表現する高次元のベクトルです。ベクトルは基礎となるテキストが類似していれば、その空間内で互いに類似しています。埋め込みは、機械学習タスクのためにテキストをエンコードする場合や、ベクトルデータベースと組み合わせて使用する場合に便利です。 - (メタ)プロンプトを生成する新規オペレータのGenerate Prompts. が追加されました。
このオペレータはプロンプトテンプレートに基づいて新規列を生成するために使用され、入力データ列の値を[[column_name]]で参照することができます。このオペレータとタスクオペレータのすべてのプロンプト入力フィールドは複数行をサポートするようになりました。特に、この複数行の機能により、通常のGenerate Attributesオペレータに比べて複雑なプロンプトを作成するための汎用性が高まります。 - ベクトルデータベースの管理と使用のためのオペレータ、Qdrant と Milvus が追加されました。ベクトルデータベースは、埋め込みベクトルを使用してテキストを格納するために使用することができ、検索拡張生成(RAG)アプローチの重要な部分になります。サポートされているすべてのベクトルデータベースには、コレクションの作成、削除、利用可能な接続の一覧表示、コレクションに関する情報の取得、埋め込みを使用したコレクションへのドキュメントの挿入、埋め込みを使用したコレクションからのドキュメントの取得を行うオペレータがあります。
- Huggingfaceモデルの微調整では、完全な微調整に加えて、PEFT/LoRA微調整をサポートするようになりました。CUDA GPUを搭載したLinuxシステムでは、LoRA微調整を量子化と組み合わせることもできます(以下を参照)。LoRAおよびサポートされるモデルの詳細については、https://github.com/huggingface/peftを参照してください。
- Huggingfaceモデルの微調整は、CUDA GPUを搭載したLinusシステムで8ビットおよび4ビットの量子化をサポートするようになりました。これは、サポートするシステム上で「quantization 」パラメータを介して有効にする必要があります。
- すべてのHuggingfaceの微調整オペレータは、16ビット(混合)精度の学習をサポートするようになりました。これにより、メモリフットプリントを削減することができますが、モデルの精度が低下する可能性があります。デフォルトは「false 」です。このオプションはCUDA GPUでのみ利用可能です。
- Text2Text Finetuningでは、入力または出力に対して長すぎるデータ行をフィルタリングしなくなりました。代わりにテキストが切り捨てられます。
- すべてのOpenAIオペレータは、他のサードパーティベンダーに接続する他のオペレータセットと区別するために、元の名前に「(OpenAI)」を加えた名前に変更されました。
- (Huggingfaceからの)ダウンロードモデルは、Huggingfaceトークンを提供するために、「token」という名前の単一のキーと値のペアを持つディクショナリ接続をサポートするようになりました。この接続は以前使用されていたオペレータパラメータを置き換えます。ほとんどのモデルはトークンを必要としないため、接続の使用はオプションであることに注意してください。接続が提供される場合、それはオペレータの出力としても提供されます。
- すべてのOpenAIオペレータは「api_key 」をキーと値のペアとして提供するディクショナリ接続を使用するようになりました。これにより、セキュリティが大幅に向上し、より良い連携やAI Hubなどへのデプロイメントが可能になりました。この接続は、これまで使用されていたAPIと組織のキーパラメータを置き換えます。この接続は、利便性のためにオペレータの出力としても提供されます。
- Text Generationのタスクオペレータは、テキストの生成方法を制御できる追加パラメータ(num_beams、penalty_alpha、no_repeat_ngram_size、do_sample、temperature parameter、top_k、top_p)をサポートするようになりました。これらのパラメータを変更することで、繰り返しを回避することや、生成される出力の質を向上させることができます。
- 全ライブラリ、特にトランスフォーマーライブラリを4.35.2にアップグレードし、新しいモデルタイプとセーフテンサーモデル形式が使用できるようになりました。https://github.com/huggingface/transformers/releasesを参照してください。
- OpenAIバージョン1.3.6および最新の価格情報に更新しました。この結果、パラメータとして組織IDを提供する必要がなくなりましたが、モデルは、今後、微調整ジョブを作成したユーザーに関連付けられます。
- すべてのオペレータに、わかりやすいポート名と説明が表示されるようになりました。これらの名前と説明は、ヘルプのツールチップとヘルプビューにも表示されるようになりました。
- すべてのHuggingfaceオペレータが「data type」パラメータをサポートし、ユーザーがモデルに使用される「torch.dtype 」を設定できるようになりました。これはモデルをロードするデータ型を指定します。より低い精度を使用することで、メモリ使用量を削減することができますが、場合によっては精度が若干低下します。「auto」に設定すると、データ精度はモデル自体から得られます。モデルによっては複数のバージョンや「revision」があり、浮動小数点精度が低いモデルがすでにダウンロードされている可能性があることに注意してください。
- すべてのHuggingfaceオペレータが「revision」パラメータをサポートするようになり、複数のモデルが存在する場合に、ユーザーがバージョン/リビジョンを選択できるようになりました。デフォルトは「main」です。値はHuggingfaceのgitリポジトリにおけるモデルのブランチ名、タグ名、またはコミットIDのいずれかになります。モデルカードのファイルセクションでそれぞれのモデルに対して可能なものを見つけることができます。
- すべてのHuggingfaceタスクオペレータが「trust remote code」パラメータをサポートするようになりました。このパラメータはHuggingface Hub上で定義されたカスタムコードを自身のモデリング、設定、トークン化、あるいはパイプラインファイルで許可するかどうかを指定します。このオプションは、ローカルマシン上のHuggingface Hubに存在するコードを実行するため、信頼でき、コードを読み取ったモデルリポジトリに対してのみTrueに設定する必要があります。しかし、モデルが基礎となるトランスフォーマーライブラリよりもはるかに新しいため、カスタムの回避策が必要な場合、このパラメータの使用が必要になることがあります。
- 入力/プロンプトがモデルに送信される前にトリミングされるようになりました。プロンプトが空白で始まっている場合と終わっている場合とでは、残念ながら結果が異なるモデルもあります。これはユーザーを非常に混乱させるため、決定的でわかりやすい結果を保証するために、プロンプトを囲む空白を常に取り除くことにしました。
- すべてのHFオペレータがグローバルプロセスのランダムシードを使用するようになりました。ただし、シードを変更したからといって、必ずしも生成結果にばらつきが生じるわけではないことに注意してください。例えば、テキスト生成タスクオペレータがサンプリングを使用しない場合、結果はランダムシードとは無関係に同じになります。残念なことに、複数回実行しても異なる結果になる場合もあります。特に、制御できないモデルの初期化時にモデルの重みがすでにランダム化されている、微調整されたモデルの場合です。
- OpenAIモデルへのプロンプト送信では、グローバルプロセスのランダムシードもサポートするようになり、OpenAIモデルからの応答がより決定的になりました。ただし、ランダムシードは現在OpenAIのベータ機能であり、これが動作する、あるいは将来も動作し続けるという保証はないことに注意してください。
- Mチップアーキテクチャを備えたMacOSシステムでは、MPSサポートが「Automatic」デバイスモードでも有効になりました。CUDA対応GPUが利用可能な場合は、そちらが使用されます。CUDA対応GPUが利用可能でない場合は、MPSが使用されます。両方が利用できない場合、計算はCPUで行われます。「Automatic」ではなくGPUまたはMPSが選択された場合にも同様のロジックが適用されます。選択されたデバイスが利用できない場合、オペレータは自動的にCPUでの計算にフォールバックします。どのデバイスが使用されたかは、ログメッセージで確認してください。また、MPSアーキテクチャをサポートしていないモデルもあることに注意してください。この場合、「Automatic」または「MPS」から「CPU」に切り替えて、CPUでの計算を強制する必要があります。
- テキスト生成タスクオペレータのチュートリアルプロセスを改善しました。古いチュートリアルは変更なしではMPSシステムで動作せず、また、そもそも良い結果が得られなかったためです。
- Download Modelオペレータは、パラメータを介してプロキシサーバーを設定できるようになりました。
- AI Hub上のHuggingfaceモデルキャッシュがAI Hub 10.3.1で保持されるようになりました(これは実際にはAI Hubの変更ですが、このエクステンションに関連しているため、念のためここに追加しました。ただし、これを利用するにはAI Hubのアップグレードが必要になることに注意してください。)
バグ
- プロンプトで使用される([[column_name]] で参照される)列は、nominalだけでなく、任意のデータ型を持つことができるようになりました。
- Fill Maskがターゲットモードで使用され、ターゲットが選択されたモデルの使用されているトークナイザーにとって不明な場合、適切に失敗するようになりました。
- Pythonの今後のバージョンで以前の機能が廃止されるのを避けるために、プロンプト置換の正規表現での引用符を修正しました。