見出し画像

ChatGPTやLLMをサービス利用するためのポイントと最適なチーム編成とは?

ChatGPTをサービスに活用したい方やChatGPT Plusの高額なライセンス費用を回避し、代替開発を検討している方も多いことでしょう。今回、GPT4などのLLMを活用する際の試行錯誤のポイントやチーム編成について、過去の経験からまとめました。ChatGPTをきっかけにAIプロジェクト未経験の方が多数参入しているため、理解度の差から会話が合わないこともあります(実際に経験したことがあります)。円滑なコミュニケーションを図ることが重要です。

後半は、私が着目している企業一覧の備忘になります。
※ 企業プレスは随時追記予定

長くなったのでチーム編成の結論から

【ChatGPTや既存のLLMを利用するケース】
一般的なサービス開発と同様の体制にプロンプトエンジニアリングという要素が加わる(データサイエンティストや機械学習エンジニア不要)
・全体
 PdM/PM(AIに関する知識を持っていると望ましい)
・低難度プロンプトエンジニアリングによるUX実現(ハードプロンプト/プロンプトデザイン)
 UXデザイナー、ビジネス設計者(エンジニアリング知識があると望ましい)
・高難度プロンプトエンジニアリング(ソフトプロンプト/プロンプトチューニング)
 機械学習エンジニア
・外部APIを活用した実装
 ソフトウェアエンジニア(LLMモデルをブラックボックスで利用できる)

【LLMモデルをチューニングして独自開発を行うケース】
AI開発プロジェクトの形態にプロンプトエンジニアリングが加わる
・全体
 PdM/AIに関する知識を持ったPM(機械学習エンジニアの言語を理解できる人が望ましい)
・使用するLLMモデル選定とモデルのファインチューニング、データ収集
 機械学習エンジニア/データサイエンティストが望ましい

※ 他はChatGPTや既存のLLM利用と同様

世の中の動きを見ると、ChatGPTを利用する場合でも、非AIの開発体制が多い傾向があります。一方、ChatGPTではなくLLMモデルを独自開発する場合は、データサイエンティストや機械学習エンジニアが実装まで担当することもあります。AIに強い企業は可能ですが、一般的にはAI人材が少ないため、可能な限り体制を抑えることが重要とされます。

ChatGPTの衝撃から生まれたチャンス

ご存じの通り、ChatGPTはこれまでになく多岐にわたる新しい可能性を切り拓いています。例えば、Shopifyなどの本格的なサービス、LINEアプリなどの軽いアプリ、ドメイン特化したLLMモデル自体をサービスとして提供しているなど、様々な事例が存在します。海外やベンチャー企業は圧倒的に早い動きを見せており、国内でもAI系企業を中心にLLMチームを立ち上げる動きが見られます。過去のAIブームで痛感したことですが、早期に組織や取り組み方を試行錯誤することが成功の鍵です。エンジニアリングに近い企業ほど、ChatGPTに乗り出していますが、ベンチャー以外の企業の動きはまだ遅いと言えます。

ChatGPTやLLMをサービス利用するための3つのポイント

① プロンプトエンジニアリング
② OSSやAPIを活用した実装
③ ChatGPTをそのまま使えるか(LLMモデルのチューニングが必要か)
※ 本来③を先に判断しますが、ChatGPT活用が多いため劣後しました

① プロンプトエンジニアリング

「プロンプトエンジニアリング」とは、ざっくり言うと、LLMモデルに与える情報を工夫することで、より期待される答えを引き出すことです。ChatGPTを上手く使うことで、日常生活や仕事の生産性を高めることができます。Twitterやnoteなどでは、プロンプトテンプレートが多数存在しています。リンクを挙げます。

良いサービスを実現するには、適切な問いかけや前提の与え方を試行錯誤して熟練する必要があります。サービスのターゲットに応じて、事前に設定するように仕込んだり、ユーザーからの問いかけに対して裏で類似情報を提供する(Few-shot Learning)などの試行錯誤が必要です。UXに直結するため、ノウハウが必要です。例えば、細かくは敬語の方が精度が高いといったことや、段階的に考える工程を与えるアプローチ(Chain of Thought)も考えられています。

プロンプトには大きく分けて2つあり。一般的にはハードプロンプトが用いられています。
・ハードプロンプト:人間によってデザインされたプロンプト
・ソフトプロンプト:学習によって獲得する最適プロンプト。プロンプトチューニングとも呼ばれます
【ハードプロンプト・プロンプトデザイン】
Few-shot Learningまでは、難易度としては難しくないため、エンジニアやUXデザイナー、ビジネス系の人材でも問題ないと思います。↓の応用編の後半からは複雑であり、高度なアルゴリズムのような必要です。AI関係者が望ましいように思います。

【ソフトプロンプト・プロンプトチューニング】
プロンプトの入出力を用いて学習を行うものであり、AIに詳しい機械学習エンジニアが対応することは難しいでしょう。ソフトプロンプトの事例は、サービス実装を含めてまだ非常に少ないと感じています。人が設計したハードプロンプトに比べファインチューニングすることなく、高性能を発揮しているので、選択肢の幅が広くなりました。
詳細は、提言されたGoogleのものを見ていただくことになります。

② 外部APIを活用した適切な実装

ChatGPTが嘘を言うというのは有名です。ChatGPTの答えにGoogle検索をかけることで、実在しない嘘をある程度回避(ReAct)することができます。Bingなどでも同様の方法が取られているようです。このような拡張機能やLLMモデルを他に切り替えるなどが可能なOSSのLangChainを活用することもできますし、今後はChatGPT Pluginなどのサービスも拡充されるでしょう。可能な限り独自開発は避けるべきであり、どのようなニーズを求められているかを把握するためにユーザーのプロンプトを蓄積するなどの全体設計力も必要です。また、プロンプトインジェクションのような攻撃を考慮して対応することも必要です。

①のプロンプトエンジニアリングに加え、どのようなアプローチがあるかは、MicrosoftのGAMOさんの資料がわかりやすく解説されています。

③ ChatGPTをそのまま使えるか(LLMモデルのチューニングが必要か)

ファインチューニングをする必要があるか?
「ファインチューニング」とは、ざっくり言うとLLMモデルにデータを追加して、特定の用途に最適化したモデルを作り出すことです。ChatGPTは最新のデータを学習していないため、古い情報を返すことがあるという課題があります。たとえば、旅行の案内などでは、一般的な旅行先に加えて、あまり知られていないニッチな場所や、新しくできた施設の情報を提供することが求められます。そこで、独自に用意したデータを追加して、応答力を改善することができます。ただし、GPT系のモデルは、全モデルを一般にファインチューニングができません。ChatGPTに搭載されているGPT3.5-turboではなくdavinci等の古いモデルや他のLLMモデルを使ってファインチューニングします。選ぶモデルによっては、応答の速度やGPUなどのコスト、稼働環境などが影響するため、用途に応じて適切なモデルを選択する必要があります。また、パラメータ数が多いほど、モデルは重くなりますが、精度も高くなるとされています。しかし、パラメータの比較的少ない軽量モデルをファインチューニングすることでも、精度を高めることができます。そのため、用途に応じた適切なモデルを選ぶための理解力が必要になります。代表的なモデルを最新まで纏めていただいた記事があります。誤解が多いですが、「ChatGPTをファインチューニングしたい!」というと単にテキストデータを準備しても出来ません。上記のLLMだけチューニングしても目的を達するかは不明ですし、後述のInstructionのプロセスも存在するためです。単体のモデルではないことに留意が必要です。

また、ファインチューニングすることなく性能が向上するソフトプロンプトの選択肢もあるため、試すことによるノウハウや適切な設計力の重要性が高いと感じます。

ファインチューニングにどのくらいのデータが必要なのか?どうやって準備するのか?
チューニングを行うには、数万の大量データが必要になります。しかし、そのデータをどのようにして準備するかは重要な問題です。LLMモデルで生成したデータを利用する方法や、自社データやクロールなどでデータを収集する方法がありますが、注意が必要です。生成されたデータには、禁止事項がある場合や倫理面の問題がある場合があるため、慎重に扱う必要があります。また、クロールによるデータ収集の場合は、情報の所在国や著作権についても注意が必要です。

チューニングのノウハウは、過去の画像系のディープラーニングと似た問題があります。具体的には、「どの程度のデータでニーズに応えることができるのか?」「学習にどのくらいのコストがかかるのか?」「学習後に使用した際にどの程度の推論時間が必要になるのか?」などです。

最近では、倫理のリスクを適切に考慮し、個人でもチューニングに取り組んでいる方がいらっしゃいます。このように適切な注意を払い、法令や倫理規範を遵守することが重要です。

Instruction Tuningが必要なのか?
ChatGPTが人に近い対話をするポイントは、大量データを学習しただけでなく、Instruction Tuningと呼ばれる手法によるスコアリングを含むことが挙げられます。Instruction Tuningは、人手で対話結果をスコアリングして、倫理的に問題のある回答や表現の良し悪しを学習させるために使用されます。LLMモデルは、Instruction Tuningなしでも機能しますが、不自然な回答をすることがあります。しかし、Instruction Tuningは手間がかかるため、現在は限られたケースで使用されています。用途に応じて必要性を見極めることが重要です。Instruction Tuningについては、NTT人間情報研究所の大作資料が参考になります。

まとめ 最適なチーム編成とは?

これまで紹介した代表的な論点に対応するチーム編成は、最初の結論に記載されています。異なる点は、プロンプトエンジニアリングの要素やAI以外のソフトウェアエンジニアの力が重要になると考えていることです。AIの民主化が進んでいると感じます。ただし、より複雑な活用をする設計となる場合は、依然として機械学習エンジニアの重要性は変わらないです。広範な知識を持つ人材の重要性も高まると想定されます。

企業のLLM組織立ち上げ・着目度を示すプレスリリース一覧

3/15 PKSHA LLMS設立

3/16 ABEJA LLM Seriesを商用サービス化

3/16 AKARI Construction LLM発表

3/20 Turing 国産LLM開発に着手

3/27 メルカリ AIGC系の専任チーム

3/27 GMO TECH プロティノス

3/28 カラクリ GPT Lab

4/4 LayerX LLM Lab

5/1 メルカリ


この記事が気に入ったらサポートをしてみませんか?