LLM案件はこんな風に進めています

#LLM#開発#プロジェクト

fuku株式会社について

fuku株式会社は2018年の創業以来、ライフサイエンス論文の実験情報をデーターベース化したサービス「Sophiscope」を開発していました。

Sophiscopeは代表の私自身が経験した辛い作業を代替することを目的として作ったサービスです。私は大学入学後に獣医学科に進学したのですが、先行研究の実験条件をまとめる際に、論文PDFから目的の化合物名・投与量・投与経路を探したり、表記揺れを修正したり、単位の違いを補正したりなどの作業がとにかく辛く、「人間がやるべき仕事ではない」と考えていました。

その後工学部に転学部し、当時を振り返りながら「先行研究から実験条件を抽出し、比較可能な形で揃えるという単純作業に一体どれだけの研究者の時間が使われているだろうか。手間だけがかかる作業を機械で代替すれば、より深く論文を読んだり、実験をするなど本質的な活動に時間を使えるはずだ」と半ば義憤に近い思いから開発を開始しました(時系列的には起業と資金調達の後に自然言語処理の勉強を始めるというとんでもない順番で物事が進んでいました)。

以来、ライフサイエンス論文を対象とした自然言語処理を主軸に自社開発や受託開発を行なっております。創業から2022年11月までは自社開発に大半の時間を費やしていましたが、一学生の時分に見つけた課題と現場の研究者の方々に実際に伺う課題に乖離を感じ、同年12月から科学において何が必要なのか改めて考えるために次の期(第6期)は受託研究にフルコミットする意思決定をしました。

この記事では第6期(2023年3月〜2024年2月)を振り返る中で、大きな需要を感じた大規模言語モデル関連(LLM: Large Language Model)の案件についてどのようなものがあったか、どのように進めているかを紹介します。
LLMや生成AIを用いた調査やシステム開発を依頼したいが、何から始めれば良いかわからないという方に届けば幸いです。

ChatGPTがもたらした影響

はじめに、第6期の弊社が請け負った案件を、おおまかな分類ごとに色分けしてタイムテーブルで表示します。

第6期受託案件

第6期受託案件

緑はライフサイエンスデータベース関連です。ライフサイエンスの領域では公共のデータベースが発達しています。遺伝子やタンパク質などの情報を収載したデータベースや、それらの関係性を収載したデータベースなどが豊富にあります(Integbioデータベースカタログに収載されているものだけでも2,500以上)。弊社ではライフサイエンス論文を解析した後に、抽出したテキストを公共のデータベースに対応づけられることを強みとしています。このような専門性が評価され、データベースを整備する研究機関や、データベースを利用する創薬AIの開発の現場の方々からお仕事をいただいています。

青はラボラトリーオートメーション関連です。ラボラトリーオートメーションの領域ではロボットを活用した実験自動化が盛んに行われています。様々なシーンで人間よりも大量かつ正確な実験を行えることが実証され、現場での活用も広まりつつあるホットな領域です。一方でロボット実験を管理するソフトウェアは未だデファクトスタンダードが存在しておりません。弊社ではそのような環境下において個別の解析システムやモニタリングシステム、レポーティングシステムなどの開発を行なっています。

そして第6期の後半から急速にご相談および発注が増加している赤がLLM関連です。対象のデータはライフサイエンス論文や医薬品インタビューフォーム(薬の説明書のようなもの)などこれまでの経験が活かせる専門文書を取り扱うことが多いです。一方で同様の文書を扱うにしても、お客様が行いたいことは多様です。名称や表現の抽出、それらの関係性の判別、表情報の構造的抽出、図に描写された内容の説明、など様々なご要望にLLMを活用しています。

実はLLM関連でお客様からご要望をいただくことの多くは以前から研究されており、一部は高い精度を出すことができました。しかし同時に、受託案件として請け負うには課題がありました。
例えば、名称や表現の抽出はNamed Entity Recognitonというタスクに相当します。私が学生時代にはLSTMや専門領域のコーパスで事前学習したBERTをいくばくかのデータセットでファインチューニングすることで高い精度を出すことができました。しかしファインチューニングには最低でも1000件程度の文書をアノテーションする必要があります(なお1000件程度では精度が低く、実用レベルにするにはさらに大量のアノテーションが必要です)。専門文書のアノテーションには高単価な専門家が必要ですし、アノテーションのためのガイドラインを作成する必要もあります。当然アノテーションをするための作業環境を構築する必要もあり、トータルで数ヶ月以上はかかります。
お客様からすれば「ちょっと様子見をしてみたい」だけなのにハードルが高く、時間とお金を費やしてアノテーションした挙句、全然うまくいかない可能性が十分にあるというリスクの高い状況でした。

しかしLLMが出現したことでZero-shot、あるいはFew-shotでも専門文書をある程度取り扱えるようになりました。これにより始めにクイックにフィジビリティスタディを実施して定性的・定量的な評価を報告した上で、さらにコストをかけて精度向上に挑戦するかお客様に判断していただくことが可能になりました。

この変化は大変大きく、「うまくいくかわからないですが、まずどれくらいの精度を出せるか測ってみたいので専門家を雇って数ヶ月間かけてアノテーションしましょう」から「まずうまくいきそうか1ヶ月で検証しましょう、うまくいきそうだったら予算をつけて本格的にデータを作っていきましょう」に変わったことで一歩を踏み出せるお客様が増えました。

またこれまでは事前の検証にも専門的なスキルが必要でした。しかし今やChatGPTを活用すれば誰でも簡単に検証ができます。論文のテキストを入力して、「この文章に登場する遺伝子名をリストアップして」と命令すればかなりの精度で処理できることが確認できます。
「ChatGPTで試したらいけそうだったから自動化したい」と事前にある程度可能である見込みをつけてご相談いただくお客様も増えました。

案件の進め方

基本的には以下の4つのプロセスで進めています。ここではタイトルにある通り、LLM案件を例にどのように進めているかを説明します。

案件の進行度合い

案件の進行度合い

調査

調査では先行事例を調べたり、お客様の業務について理解を深めることで、フィジビリティスタディやPoCのゴールを定めます。1~2ヶ月でクイックに完了させることが多く、調査内容をまとめた報告書を納品物として提出します。

進め方としては、始めにキックオフミーティングにて先方の担当者と責任者の方と調査を依頼するに至った背景について明らかにします。可能な範囲で必要な情報(分析の対象とするお客様のデータなど)も共有してもらいます。そして隔週で調査進捗を報告し、調査の方向性にズレがないかを確認しながら進めます。
特に重視している点は、最終的にお客様が何を実現したいのかを伺い、そのために適切な調査対象を厳選するということです。

例えば「ライフサイエンスの言語資源を用いたRAG(Retrieval-Augmented Generation)について調査をしてほしい」という事例では、詳しくお話を伺うと以下のような事情が明らかになりました。

  • 背景:多岐に渡る情報を収載した構造化データを有している

  • 課題:エンドユーザーはクエリを書けないので限定的な情報しか提供できていない

  • 要望:自然言語を用いたインターフェースで情報を提供したい

そこでRAGを用いて似たような課題を解決できると知って調査を依頼したということでした。しかしこのケースではいわゆる原典のRAGのように文書をベクトル化するよりも、ユーザーのクエリをデータベースに問い合わせるクエリに変換するQuery Constructionという派生系の方が要望を実現する手段として適切だと思われました。そこでお客様にそれぞれの特徴をご説明した上で、後者の調査に重点を置くという方針変更ができました。

フィジビリティスタディ

フィジビリティスタディでは実際にお客様のデータに対してPoCやシステム開発で利用する手法が有効化を検証します。こちらも1~2ヶ月でクイックに進めることが多く、検証内容をまとめた報告書と生成したファイルを納品物として提出します。

進め方としては、まずキックオフミーティングにて検証する項目および定量的評価が可能であるか、可能な場合はどのような指標を用いるかを決定します。方針が定まるまではお客様の業務フローや対象とするデータについてSlackや週次の報告会で確認しつつ、方針が定まったら隔週で進捗を報告しながら進めます。

例えば「論文から専門用語とそれらの関係性を抽出したい」という事例では、正解データの検証から開始しました。この事例ではすでにマニュアルで専門家が作成したデータがありましたが、以下のような課題が明らかになりました。

  • 論文に記載がない情報が含まれている(引用文献からの補完や暗黙的な理解に基づく補完)

そこでLLMに抽出だけでなく補完を含めた高度な処理を命令するのか、あくまで今回は抽出に絞るのか決定する必要があるとお伝えし、後者を強くお勧めしました。これまでの経験上、前者は現時点のLLMの推論能力では実用レベルの結果が出ないと思われたためです。結果として、後者の抽出のみを評価することとし、それに応じたデータをご用意いただくことになりました。

LLMを利用する多くのケースでは古典的な自然言語処理タスクと類似の問題設計に落とし込むことで広く使われている評価指標を採用しています。例えば名称を抽出するような事例であればNamed Entity Recognitionと同様にF1値で評価します。さらにRelation Extractionを加えてグラフ構造を抽出したいというようなケースであればノードとエッジごとにF1値で評価したり、グラフ単位で正解データと比較してGraph Edit Distanceを算出したりします。要約タスクであればROUGEなどの指標を用います。

以上のようにフィジビリティテストではお客様が実現したいことに対して適切な評価指標を設計し、現時点でのベースラインとなる性能を算出します。将来的にプロンプトエンジニアリングを通して継続的に改善するにあたって比較可能な指標を準備することも見越しています。またフィジビリティテストの段階で明らかに現時点のLLMで実現可能な範囲を超えていることがわかればそれもお伝えしています。

なお、フィジビリティスタディは前項の調査や次項のPoCと合わせて発注いただくことがほとんどです。

PoC (Proof of Concept)

PoCではいよいよお客様に提供するためのプログラムを作成します(フィジビリティスタディでもコードを書きますが、あくまでアドホックな検証用のものに留めています)。PoC以降は事例によって事情が異なりますが、多くのケースでは3~6ヶ月程度の期間で、お客様のお手元でも動かせるようなDockerイメージを納品物として提出します。またソフトウェアの扱いに慣れていないお客様の場合はexeファイルなど、ダブルクリックで操作可能なものを納品することもあります。

進め方としては、まずキックオフミーティングにてプログラムへの入力と出力を決定します。ここまでに調査、フィジビリティスタディを実施していれば要件はかなりクリアになっているのでそれらを参照しながら仕様を決めていきます。始めのうちはSlackや週次の報告会で方向性を確認しつつ、あとは開発に集中するフェーズに入ったら隔週で進捗を報告しながら進めます。

LLM案件で特に意識している点は、納品後にお客様がどのようにそれを活用し、当初の目的を達成するのか、ということです。

例えば、秘匿性の高いデータを取り扱うためPoCは少量のダミーデータに対して行い、納品後にお客様にてプロンプトエンジニアリングをしたいというご要望がある場合。このような事例では設定ファイル上でプロンプトを変更しやすいように工夫をします。他にもOpenAI APIとローカルのモデルを切り分けられるようにすることも可能です。

多くのケースではPoCを完了したら、まずは納品物のDockerイメージを業務に利用いただき、業務改善効果やあるいはその他の目的が達成できそうかを検証していただいています。具体的には担当者のローカルのPCにてDockerコンテナを立ち上げ、それを業務に使ってみるというイメージです。そのようにPoCの成果物が有用であり、より本格的にシステム開発をする必要性を感じていただけたら最終ステップのシステム開発へと移ります。

システム開発

システム開発ではお客様のクラウドやオンプレミスのサーバーにPoCにて作成したDockerイメージを組み込んだシステムを構築します。PoC同様、事例によって事情が異なりますが、目安としては6ヶ月以上の開発期間を要することが多いです。

進め方としては、まずキックオフミーティングで背景や課題、実現したいことを伺いながら要件定義を行います。完成した要件定義書をお客様の組織内にて問題ないか、担当者及び責任者の方々にご確認いただきます。またこの時、絶対に遅れてはならないデッドラインがあれば確認しています。仕様変更はシステム開発につきものです。当初の予定を変更することがある場合に、お客様のビジネスや研究に与える影響を把握しながら意思決定をするために案件以外の部分も積極的にお話を伺います。

システム開発で特に重視している点は、何を持って完了とするかは始めにしっかり定義し、定例報告のたびに今回のゴールとマイルストーン、そして現在の進捗度合いを確認することです。特に長期の開発になると、始めから決めていたことなのか後から追加されたものなのか、必ずやるとお約束したことなのかできればやりましょうとお伝えしたものなのか、そういったことがお互いに曖昧になっていきます。週次〜隔週の頻度で行うミーティングでそのような点をはっきりと共有するように心がけています。

LLM案件ではありませんが、特殊な事例としてスーパーコンピューター「富岳」上にシステムを構築した事例などもあります。sudo権限を必要とするDockerが使えないため、Singularityを採用するなどお客様の事情に合わせて技術選定を行っています。

まとめ

以上、弊社のLLM案件の進め方についてまとめました。LLM関連の調査やシステム開発を依頼したいが何から始めれば良いかわからないという方に届けば幸いです。

fuku株式会社はライフサイエンスを中心として科学全般の効率化を支援することにこれからも注力して参ります。
代表の私自身もより自分の幅を広げるため、NEDO GENIAC(Generative AI Accelerator Challenge)の開発メンバーとして化学に特化したLLMの開発に携わったり、LayerXのAI・LLM事業部に業務委託として参画したり、LASA: Laboratory Automation Supplier’s Association(研究自動化の学会)にて自動レビュー論文生成プロジェクトを立ち上げたりしています。
新しい知見を学び、世界中の科学への貢献を果たしていく所存です。

エンジニア募集中!

最後に。fuku株式会社は絶賛エンジニアを募集中です!

必須要件
・バックエンドもしくはインフラの開発経験
・技術で科学を支援したいという気持ち

歓迎要件
・LLMアプリケーションの開発経験
・機械学習もしくはLLMに関連する研究経験
・ライフサイエンスに関連する研究経験
・プロジェクトマネジメント経験

ご興味がある方は代表 山田のXアカウント(@roy29fuku)にDMをください。お待ちしています!