OpenAI DevDay 2024 | コミュニティスポットライト | Dimagi

4,431 文字

YouTube
作成した動画を友だち、家族、世界中の人たちと共有

みなさん、こんにちは。私はアナ・ディクソンと申します。Dimagiのアプライドリサーチサイエンティストをしています。これは本当に素晴らしい仕事で、AIと機械学習の進歩を全て取り入れ、私たちの分野で活用することができます。Dimagiは数十年の歴史を持つソーシャルエンタープライズです。
私たちは低中所得国で使用するデジタルヘルスツールを開発しています。これらのツールの大半は最前線の医療従事者の手に渡りますが、ユーザーに直接提供するケースもあります。Dimagiの目標は、リソースの少ない現地の言語でLLM技術を機能させることで、この技術が公平に普及することを目指しています。
このプロジェクトは、ケニアとマラヤの低リソース言語での健康教育チャットボット用にGPT-4o miniとGPT-4oをファインチューニングすることに関するものでした。では、私たちのユースケースを紹介します。これはビル&メリンダ・ゲイツ財団の資金提供を受けたプロジェクトで、ケニアとセネガルで家族計画にLLMを活用するというものです。
プロジェクトの目標は、若者の知識、態度、自己効力感を変えることで、家族計画における行動変容を支援する会話エージェントの有効性を評価することでした。これが私たちのチャットボットのアーキテクチャです。ユーザーメッセージが入力されると、ルーターLLMに届きます。脳のグラフのように見えるアイコンはそれぞれ異なるGPT-4のインスタンスを表しています。
そして後者は、3つのサポートボットのいずれかにメッセージを送ります。一般的な会話ボット、クイズボット、ロールプレイボットがあります。最後にユーザーに応答が返されます。主要なプロジェクト要件の1つは、シェンで動作する必要があったことです。シェンはスワヒリ語と英語を組み合わせたスラング、つまりスワヒリ語と英語の混合語です。
他の言語も混ざっており、スラング表現もあります。これはケニアの若者にとってより親しみやすくするためです。しかしこれは本当に難しい課題です。なぜなら、LLMは利用可能なデータで事前学習されていますが、これらの言語はあまり入手できないからです。私たちはほとんどの人がそうするように、プロジェクトを始めました。
ゼロショットとフューショットのプロンプティングを試しました。しかし、良好なシェンを生成することができませんでした。ネイティブスピーカーのチームメイトによると、スワヒリ語と英語の置き換えが非常に不自然で、期待した流れではなかったとのことです。そこで、パートナーの資料から800以上のシェン文をプロンプトにスタイルガイドとして注入する別の方法を試しました。
その結果、良好なシェンが得られ、かなり期待が持てました。しかし、プロンプトに注入するトークン数が多すぎます。そのため、非常に遅く、コストもかかりました。また、会話の履歴やプロンプトの変更に対してシェンの品質が十分に堅牢ではないことも分かりました。
そこで、新しいことを試してみました。これが更新されたアーキテクチャです。左側は全て同じですが、今度は全てのGPT-4インスタンスに英語でのみ応答するように指示しています。そして最後に、英語から目標言語に翻訳する新しい機械翻訳レイヤーを通します。
これにより、システムにモジュール性が追加され、いくつかの利点があります。1つ目は明らかで、開発努力を分離できるようになったことです。これで健康教育チャットボットと機械翻訳レイヤーを最適化し、さらに異なる言語も検討できるようになりました。
2つ目の利点は、言語品質の評価を分離できるようになったことです。これは以前は本当に難しかったのですが、とても興味深いので後ほど詳しくお話しします。最後に、セクションのファインチューニングを行う際のリスクの1つは、LLMが他のタスクに対して性能が低下することです。
そこで、機械翻訳レイヤーのファインチューニングに範囲を非常に狭く保つことで、その心配をあまりする必要がなくなりました。機械翻訳レイヤーは、LLMのチャット完了エンドポイントを使用するだけで非常に簡単に実装できます。入力メッセージを送信し、これが私が使用したシステムプロンプトです。
「あなたは機械翻訳ボットです。ユーザーがテキストを入力したら、そのテキストを英語から目標言語に翻訳してください。翻訳のみを返してください。テキストを翻訳できない場合は、noneとだけ返してください。翻訳のみを返し、追加の説明は返さないでください。」プロンプトを改良した経験のある方は笑っているでしょう。
私も同様です。あるモデルは少し冗長で、常に翻訳の説明をしたがりました。そして、ユーザーメッセージは翻訳するテキストになります。最後に、GPT-4チャット完了エンドポイントに送信し、アシスタントの返信は翻訳されたテキストになるはずです。しかし、実装方法ができたところで、それが機能したかどうかを知る必要があります。
ここで評価の部分に入ります。まず評価データセットを作成します。これは私たちの場合、文対のCSVファイルです。1つの列は入力である英語の文で、もう1つの列は正解の翻訳です。そしてそれぞれの文対に対して、システムに入力を送信して候補となる翻訳を生成します。
そして、それぞれの候補翻訳について、どれだけうまくいっているかを測定する方法が必要です。そこでBLEUメトリクスの出番です。これは機械翻訳で非常によく使用されるメトリクスです。実は数式を載せたい衝動を必死に抑えました。でも、それを説明するのに10分もかかってしまうので控えました。
その代わり、おおよそのところ、候補翻訳と正解翻訳の間でトークンがどれだけマッチしているかを測る指標だとお伝えしたいと思います。知っておくと良いのは、0から100までのスケールで、スコアが高いほど良い翻訳だということです。そして、スコア40程度が一般的に良好とされています。
この問題に自分で取り組む場合の他のポイントとして、文レベルではBLEUはあまり良くないということがあります。大規模なデータセットでの方が良いです。また、BLEUは複数のパラメータとトークナイザーの選択に依存します。そのため、例えば論文間でメトリクスを比較する場合、同じものを比較していない可能性があります。
そこで、チーム内で標準的なメトリクスを維持するために、SacreBLEUパッケージを採用しました。これは本当に素晴らしく、強くお勧めします。すぐに使える標準的なBLEUメトリクスが用意されています。私たちはFLORES-200 spBLEUメトリクスを使用しました。これはFacebook AIリサーチチームが「no-language left behind」イニシアチブのために開発したものです。
この目的に合わせて開発されたものなので、ここで使用するのに非常に適していると判断しました。さて、問題をしっかりと設定したところで、ついにファインチューニングに進むことができます。私たちは教示ファインチューニングを使用します。教示ファインチューニングとは、ご存じない方のために説明すると、モデルに同じ指示を何度も何度も与える考え方です。
そしてその指示に対してモデルを適合させ、良い仕事ができるようにすることを目指します。そこでファインチューニングのデータセットを作成します。Pythonスクリプトを書きました。このスクリプトは単にJSONLファイルを構築します。各行は、それらの正解翻訳の1つに対してモデルが機械翻訳タスクを完了することを表しています。
説明していきますが、これらの列それぞれがJSONLファイルの1行だと想像してください。スライドにこれら全てを載せるのは本当に難しいです。まず、送信するメッセージから始まります。これらはシステムに送信するメッセージで、期待する応答です。
最初のメッセージはシステムプロンプトです。「あなたは機械翻訳ボットです」などなど。これは先ほど見たのと同じプロンプトで、トレーニング時と推論時で同じプロンプトを使用することをお勧めします。そして、ユーザーテキストがあります。これは入力される英語の文です。
最後に、アシスタントの返信があります。これはそれらの正解翻訳の1つです。JSONLファイルをアップロードし、OpenAI APIのPythonパッケージを使用している場合、ファインチューニングジョブを開始するのは文字通り1行のコードです。そして私のような人なら、プレイグラウンドを開いてエラー曲線が下がっていくのを見るでしょう。これは非常に満足感があります。
私たちが発見したのは、ファインチューニングによってシェンの翻訳品質が大幅に向上したということです。チームのネイティブスピーカーによって翻訳された1,300のドメイン固有の文があり、85/15%の分割を行い、15%のデータをホールドアウトとして残しました。GPT-4o miniは22.21のspBLEUスコアを達成しました。
そしてGPT-4o miniをファインチューニングすると、そのスコアは65.23に上昇し、かなり大きな改善でした。また、やはりビル&メリンダ・ゲイツ財団の資金提供を受けて、他の言語でもこのアイデアを探求する新しいプロジェクトを始めたところです。これらの結果は非常に予備的なものですが、チェワ語を研究しています。これは主にマラウイで約1000万人が話す言語です。
トピックの示唆的なリストから別のLLMで554の単純な文を生成し、プロフェッショナルの翻訳者に翻訳してもらいました。GPT-4o miniは18.45のspBLEUスコアから始まりました。ファインチューニングされたGPT-4o miniはそれを倍の39.46にしました。ベースモデルのGPT-4oは44.62とさらに良く、
最近ではGPT-4oがファインチューニング可能になったので、それも試してみて47.40を達成し、少し良くなっています。正直なところ、最初は少し落ち込みました。見てみると、ファインチューニングされたGPT-4oの前に、GPT-4oがファインチューニングされたGPT-4o miniよりも良い性能を示していたからです。
しかし考えてみると、これらはかなり比較可能で、それは本当に exciting です。なぜなら推論コストが10分の1だからです。右側のボックスプロットでは、BLEUスコアが精度評価と一致することを確認するために翻訳者と協力しており、人間による検証も少し行っています。
また、評価とトレーニングの両方にオープンソースのデータセットを活用することにも成功しています。興味がある方はそちらもチェックしてみてください。私とチームに感謝します。

コメント

タイトルとURLをコピーしました