見出し画像

生成AI関連PoCのツールと選び方

生成AIに限らずAIの開発には不確実性を伴うため、それらを用いた機能を開発する時は、PoCを事前に行うことがほとんどです。

PoCでは主にUX(ユーザーが受け入れるか)技術(〇〇できるか)を検証します。

この時重要になるのは、検証方式です。
目的に合わせて適切に選択しなければ、最良の効果は得られません。
検証方式によって、可能な技術検証とUX検証の範囲が決まってしまうので、慎重に選ぶ必要があります。

また、PoCでは予算や期間が限られていることがほとんどなので、コスパやタイパも重要な要素となります。

PoCの考え方に関しては以下でも解説しているので、興味があれば呼んでみてください。

この記事では検証方式を使用するツールの形で比較します。
観点は以下の5つです。

  • UX検証のしやすさ

  • 技術検証のしやすさ

  • コストパフォーマンス(開発)

  • コストパフォーマンス(インフラ構築)

  • タイムパフォーマンス

今回は、私が業務でよく使用する6つのツールと、ツールを使用しないWebアプリ開発を比較しました。
比較表は以下の通りです。

詳しく解説していきます。


Jupyter Notebook(ローカルホスト)

Jupyter Notebookは、データ分析や機械学習のプロトタイピングに広く使用されるツールです。
開発者向けのツールであるため、UXの検証には使えませんが、技術検証にはとても使いやすいです。
技術検証メインで、とにかくコストを抑えたい場合に適しています。

UX検証のしやすさ : X

UIをもっていないため、UX検証はできません。
また、開発者向けのツールであるため、一般のユーザーが使うのも難しいです。

技術検証のしやすさ : ◯

ローカルで動かすので、好きなパッケージのインストールやアプリとの連携が可能です。
技術検証の自由度が高く問題解決が容易のため、本質的な問題に集中できます。
ただしローカルPC上で動作するので、マシンスペックが課題になったときに解決が難しいです。

コストパフォーマンス(開発) : ◎

動作環境がシンプルなため、技術的な問題が発生しにくく、最低限のコストで開発できます。

コストパフォーマンス(インフラ) : ◎

ローカルPC上で動作するため、インフラ構築不要です。

タイムパフォーマンス : ◯

最小限のコードで処理と結果の表示ができるため、タイムパフォーマンスも高いです。
一週間程度の短いスパンで検証サイクルを回すことができます。
しかし、コーディングはどうしても必要なので、ノーコードツールと比較すると一歩劣ります。


Deepnote

DeepnoteはJupyter Notebookベースのコラボレーションデータ解析ツールです。
Jupyter Notebookにできることに加えて、チームで作業をするための様々な機能が備わっています。

簡単なUIを備えたWebAppとしてNotebookを共有する事ができるので、最低限のUX検証も可能です。

公式の紹介動画を見るとどんなツールなのか理解できると思うので、興味がある方はぜひご確認ください。

技術検証メインで、最低限のUX検証も行いつつ、コストを抑えたい場合に適しています。

UX検証のしやすさ : △

テキスト、数値、日付、ファイルアップロードなどの簡単なUIをつかった最低限のUX検証は可能です。

ChatBotなどの複雑なUIを持ったAIのUX検証は出来ませんが、実際に触ってもらいながら、パラメータやインプット画像などを変えてAIを試すような検証は可能です。

技術検証のしやすさ : ◎

JupyterNotebookと同じく、好きなパッケージやアプリとの連携が行えることに加えて、以下の特徴を持ちます。

  • Snowflake, BigQueryなど、様々なデータソースとの連携が容易

  • 構成のCPU・GPUを搭載したマシンを使用可能

  • グラフや表などのアウトプットが見やすく、結果を確認しやすい

技術検証の自由度は最高レベルといえます。

コストパフォーマンス(開発) : ◎

シンプルな動作環境と、UIの追加・データソースとの連携などが直感的に行えるツールなので、開発にかかる工数は最低限です。

また、AIによるオートコンプリート機能が優秀なため、かなり効率よく開発が進められます。

開発のコスパも最高レベルです。

コストパフォーマンス(インフラ) : ○

インフラ構築自体は不要ですが、ツールの利用費がかかります。

無料でも使えますが、かなり制限がかかるので、PoCで使う場合はTeamプランの契約をおすすめします。
エディター(Notebookを編集する人)一人当たり$31(2024.07.29現在)なので、高くはありません。
また、WebAppとして使うユーザーは課金なしで追加ができます。

タイムパフォーマンス : ◯

JupyterNotebookと同じく、タイムパフォーマンスも高いです。
UIの調整はノーコードで可能です。

ただ、コーディングが必要な部分がほとんどのため、ノーコードツールと比較すると一歩劣ります。


Streamlit(セルフホスト)

StreamlitはPythonだけでWebAppを実装できるツールです。
ChatBotを含めたある程度複雑なUIも実装できます。

セルフホストとは、AWSなどの環境に自分でインフラを用意して運用することを指しています。
自分でインスタンスを用意するためマシンスペックの制限はありませんが、コストはかかります。

技術検証とUX検証を両立しつつ、予算もある程度確保しているときに適しています。

UX検証のしやすさ : ○

PoCの範囲で求められるほとんどの要求に答えられるポテンシャルを持ちます。

ただし、HTML, CSS, Javascriptを主体にしたWebAppと比較すると、UIのカスタマイズ性は劣るため、UX検証をメインとする場合は要求を満たせない事があります。

技術検証のしやすさ : ◎

Streamlit自体がPythonのパッケージであり、豊富なライブラリやアプリと連携できます。

また、自身でインスタンスを用意するので、マシンスペックも検証の無いように合わせたものを調達できます。

技術検証の自由度はDeepnoteと同じく最高レベルです。

コストパフォーマンス(開発) : ○

PythonだけでUIとロジックの両方が実装できるため、開発コストは抑えることができます。

しかし、UIの実装にはくせがあり、ちょっとでも凝ったUIを実装しようとするとコードが複雑になる傾向があります。

そのため、DeepnoteなどのUIのコーディングが不要なツールと比較すると開発コスパは一歩劣ります。

コストパフォーマンス(インフラ) : △

自分でインフラを用意する必要があるため、インフラ構築・維持コストがかかります。

タイムパフォーマンス : △

AWSなどにデプロイする必要があるため、検証サイクルが遅い傾向があります。
また、コーディングの必要があるため、ノーコードツールと比較すると開発にも時間がかかってしまいます。

CD環境を適切に構築することにより検証サイクルを早くすることは可能ですが、構築コストがかかるため、検証期間や予算と相談しながら決めましょう。


Streamlit(Community Cloud)

Streamlitは公式がCommunity Cloudという無料でWebAppを公開する環境を用意してくれています。

Githubと連携するだけでStreamlitで作成したアプリを公開できるため、最低限のコストでUX検証が可能です。

ただし、無料の環境であるため、マシンスペックと起動時間に制限があり、技術検証の自由度は低いです。(2024.07.29現在 有料版はありません)

最低限のコストでUXの検証もある程度行いたい場合に適しています。

UX検証のしやすさ : ○

セルフホスト版と同じく、ある程度のUX検証が可能ですが、HTML, CSS, Javascriptを主体にしたWebAppと比較すると、UIのカスタマイズ性は劣るため、UX検証をメインとする場合は要求を満たせない事があります。

技術検証のしやすさ : △

セルフホスト版と同じく、様々なPythonパッケージを使えますが、インスタンスの選択やカスタマイズができないため、技術検証の自由度が低いです。

計算コストがかかる複雑な処理をさせるのには向いていませんが、近年では高性能なAIはAPI経由で利用することが多くなってきているため、問題にならないことも多いです。

コストパフォーマンス(開発) : ○

セルフホスト版と同じ。

コストパフォーマンス(インフラ) : ◎

インフラを自分で用意する必要がなく、デプロイもGithubとCommunity Cloudを連携するだけでできるため、インフラのコスパは最高です。

タイムパフォーマンス : ◯

コーディングの必要があるため、ノーコードツールには劣りますが、デプロイは簡単のため、タイパは良いです。


Dify(セルフホスト)

DifyはオープンソースのLLMアプリ開発プラットフォームです。
ノーコードで様々な目的に特化したLLMアプリを作成する事ができます。

Apacheライセンス2.0をベースとしたライセンスであり、ほとんどの用途で商用利用も可能です。

Difyのライセンスに関しては以下で詳しく説明しています。

様々なChatBotやLLMを組み込んだワークフローを短時間で実装できるためLLM関連のPoCをプロンプトエンジニアリングやUX検証メインで行う場合に適しています。

UX検証のしやすさ : ◯

ChatBotの場合だと、画像のアップロードや履歴機能など、必要な機能がほとんど揃っているため、UX検証はやりやすいです。

また、利用状況を解析できるダッシュボードが標準で搭載されており、ユーザーの使い方や評価も集めることができます。

ChatBotや単純なワークフローにおいてはUX検証はやりやすいと言えます。

技術検証のしやすさ : △

ノーコードツールであるため、使えるツールや処理に制限があります。

ツールの種類が豊富なため、様々なアプリの幅は広いですが、複雑な処理を実現しようとすると実装難易度が急に上がります。

制限が多いため、技術検証はしにくいと言えますが、プロンプトチューニングに限れば十分な自由度を持っています。

コストパフォーマンス(開発) : ◯

ノーコードツールのため、開発にかかる工数はかなり少なくできますが、複雑な処理を組もうとすると調整が難しくなる傾向にあります。

コストパフォーマンス(インフラ) : △

自分でインフラを用意する必要があるため、インフラ構築・維持コストがかかります。

タイムパフォーマンス : ◯

開発・デプロイが簡単のためタイパは良いです。
ただ、2024.07.29現在、Difyは頻繁にアップデートをしているため、セルフホストの場合、アップデート作業などで多少タイパが落ちる可能性があります。


Dify(SaaS版)

Difyを運営するLanggeniusはインフラ構築不要なSaaS版をリリースしています。

セルフホスト版と同じ機能をインフラ構築不要で使えるため、高いコスパとタイパを有していますが、2024.07.29現在、作成したアプリが制限無しで公開されてしまうという欠点があります。
(公開範囲を制限できず、URLを知っていれば誰でも使えてしまう)

機密性が無いLLM関連のPoCを、プロンプトエンジニアリングやUX検証メインで行う場合に適しています。

UX検証のしやすさ : ◯

セルフホスト版と同じ。

技術検証のしやすさ : △

セルフホスト版とほとんど同じですが、インフラを自由に設定できない分、こちらのほうが若干技術検証の自由度が下がります。
ただ、連携できるツールが豊富なため、問題にならない事がほとんどです。

コストパフォーマンス(開発) : ◯

セルフホスト版と同じ。

コストパフォーマンス(インフラ) : ◯

インフラ構築自体は不要ですが、ツールの利用費がかかります。

無料でも使えますが、かなり制限がかかるので、PoCで使う場合はTeamプランの契約をおすすめします。

Teamプランは月額$159(2024.07.29現在)で、ユーザー数の制限はありません。
また、TeamプランにはGPTなどのLLMを使うためのクレジットがついているので、契約した時点からLLMアプリを作成開始できます。
(クレジットを使わず、APIキーを設定して使うことも可能です)

タイムパフォーマンス : ◎

セルフホスト版と同じく、開発・デプロイが簡単なのに加えて、Difyのアップデート作業も不要なため、タイパは最高です。


Webアプリ開発

ツールを使わず、Webアプリを開発して検証する手法です。

すべてを自力で用意するため、コスパもタイパも最悪ですが、UX検証と技術検証の制限が一切ないという利点があります。

予算が豊富にあり、UX検証の重要度が著しく高く、技術検証も同時に行いたい場合に適していますが、大抵の場合はUX検証と技術検証を分けて実施し、コスパとタイパを向上させます。
今まで一回だけこの方式を採用したことがあります。

UX検証のしやすさ : ◎

UIに制限が無いため、かなり自由度の高いUX検証が行えます。
新技術を組み合わせた今までにないユーザー体験の検証などに適しています。

技術検証のしやすさ : ◎

使えるリソースや、言語・パッケージ・アプリに制限が無いため、技術検証の自由度も最高です。

コストパフォーマンス(開発) : X

UIとロジックすべてを自力で開発するため、コスパは最悪です。

コストパフォーマンス(インフラ) : X

開発と同じく、インフラ構築におけるコスパも最悪です。

タイムパフォーマンス : X

すべてを自力で用意し、チームも比較的大規模になるので、検証サイクルは遅くならざるを得ません。

PoCはスピードが命の場合が多いので、できる限りリリースを細かく行い、できる限りサイクルを短くすることが求められます。

まとめ

まとめると以下のようになります。

  • 生成AIを含んだ機能のPoCにはUX検証(ユーザーが受け入れるか)技術検証(〇〇できるか)がある

  • 技術検証メインで、とにかくコストを抑えたい→Jupyter Notebook(ローカルホスト)

  • 技術検証メインで、最低限のUX検証を行いつつ、コストを抑えたい→Deepnote

  • 技術検証とUX検証を両立しつつ、予算もある程度確保している→Streamlit(セルフホスト)

  • 最低限の技術検証とあるていどのUX検証を行いつつ、とにかくコストを抑えたい→Streamlit(Community Cloud)

  • ChatBotなどのLLM関連のPoCを、プロンプトエンジニアリングやUXや検証メインで行う→Dify(セルフホスト)

  • 最低限のコストで、機密性の無いLLM関連のPoCをプロンプトエンジニアリングやUXや検証メインで行う→Dify(SaaS版)

  • 予算が豊富にあり、UX検証の重要度が著しく高く、技術検証も同時に行いたい→Webアプリ開発

以下の記事でも解説していますが、AI関連のPoCを成功させるためには、ユーザーに実際に使ってもらいながら調整を繰り返す必要があります。

そのため、ユーザーに使ってもらうための環境を用意することが重要なのですが、コスパ・タイパとトレードオフの関係なのが難しいところです。

状況に合わせて適切なツールを選ぶか、場合によってはUX検証と技術検証を分けてコスパ・タイパを最適化するなど考えたいですね。


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