SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート(AD)

AIソリューションの成否は「AI以外のチューニング」がカギ! AIソリューション構築のプロが解説

【15-D-2】ML/ GenAIのソリューション化に向けたAI以外のチューニング

  • X ポスト
  • このエントリーをはてなブックマークに追加

価値を優位にシステムとして当たり前のチューニングをする

 次に考えるべきことは、要件である。システムは何らかの価値を提供するもの。つまり要件は価値と言い換えることができる。

 ではシステムで実現したい価値とは何か。ユーザーに回答する速度なのか、確実性のある回答なのか、利用しやすいことなのか、これらいずれについても「目指したいUXが存在するはず。その価値を損なってはいけない」と坂本氏は言う。

 だがその一方で、その価値を損なわないために、妥協しなければならない他のものもある。つまり何を妥協できて、何が妥協できないのかをしっかり判断する必要があるというわけだ。

 その例として坂本氏が取り上げたのは速度。まず考えるべきことの一つが、同期か非同期か。同期処理は対話型生成AIや機械学習を用いた監視などのアラート、不正検知、コールセンターの自動化などで求められる。一方、購入履歴からのレコメンドや議事録作成、紙書類の電子化、需要予測などは非同期処理でも十分だが、「人は同期処理に越したことはないと思ってしまいがち」と坂本氏は指摘する。だが同期処理すればするほど、考えることは増える。例えば、RDBMSだと要求の速度を満たせないから、インメモリーDBにしたとする。「インメモリーDBにした瞬間に、RDBMSより考えなくてはいけないことが出てくる」(坂本氏)

 言語もPythonにすればAIエンジニアが書いたコードがそのまま流用できるかもしれないが、Cで書くと書き直さないといけなくなる。また推論をユーザーの手元でさせるのであれば、エッジ推論を選択するのも一つの手だが、スマートフォンのスペックで足りるのかなど、考慮する必要がある。一方、サーバで推論させるのであればスペックには不安はなくなるものの、バースト的なトラフィックに対しては考慮が必要になる。「このように同期処理にすればするほど、実装コストや難易度は上がっていく」(坂本氏)

 非同期のバッチ処理以外の選択肢として最近注目されているのが、半同期処理のイベント駆動である。AWSであれば図のような構成が考えられる。

図3.信頼性が必要かつトラフィック量が読めないシステムに効果的な構成
図3.信頼性が必要かつトラフィック量が読めないシステムに効果的な構成

 一方はAWS LambdaからAmazon SQSという昔ながらのキューイングサービスにデータを送る。Amazon SQSはコンポーネント間で任意の量のメッセージを送信、保存、受信することができるというサービス。例えば1秒間に10人処理するようにしたとすると、1秒間に100人アクセスが来ても、処理できるのは10人のみなので、バーストしてエラーになることはない。もう一方はイベント駆動の仕組みとしてAmazon DynamoDBを用意。DynamoDBへの書き込み処理をトリガーにLambdaを起動する。「この仕組みの良さは、問い合わせに対して受け付けたというレスポンスを返し、実際の処理は後続で行うことができること。サーバ負荷を考慮したシステムにできます」(坂本氏)

 このような半同期処理の仕組みは金融など、信頼性が必要かつトラフィック量が読めないところに使用されているという。

 では具体的にどうやって使うのか。坂本氏は実際にARISE analyticsのプロジェクトでAWSのイベント駆動を組み合わせた使った例を紹介。大量に送られてくる写真の中から、特徴的な写真をAIで検出するための仕組みを構築するというもの。「1度に1万枚の写真が送られてくると同期処理は難しいので、非同期とイベント駆動を組み合わせた仕組みにした」と坂本氏は話す。

 すべてをリアルタイムで即時結果を出せるのなら良いが、現実はそうではない。「UXと共に、このシステムにとって優先すべきことは何か。ユーザーへの価値を最大化するためにどの要件が捨てることができるのかを考える。それが我々エンジニアとしての価値」だと坂本氏は言う。

 開発が終わると運用が始まる。開発中に運用まで気を回すことはなかなか難しいが、「そこにも目を向けないといけない」と坂本氏は言う。

 AIソリューションにおいては、再現性がカギを握る。なぜならAIは生成のたびに答えが変わるからだ。問い合わせを考えると生成した結果に再現性がないのは問題である。「お宅のAIに暴言を吐かれた」というクレームがあっても、それを再現できなければ対応が難しい。しかもユーザーは想定外の使い方をすることもある。システムは運用フェーズに入ると想定外なことが起こるので再現性が大事なるのだ。再現性を担保するにはどうすればよいか。

「システムであればリクエストに使用されたパラメーターを取得し、ライブラリなどあらゆるバージョンは商用と合わせる。AIであれば、シード値を乱数などで使用している場合は可能な限り固定する。コミットIDであればどのコミットでデプロイされているかを管理すること。そしてこれらすべてを管理し、ロギングを実施することで再現性を担保できる」(坂本氏)

 だが、それでも再現できないことも起こりうる。その場合は「ロールバックできるようにすること」と坂本氏はアドバイスする。ロールバックは、1つ前のバージョンに戻すという意味の再現性と考えれば良いという。

 最後に坂本氏は「システムは柔軟に変更ができるように開発すること。本当の価値を見極め、捨てられるもの、捨てられないものを把握し、再現できるものを準備すること。これがAIソリューションを開発するうえでは重要だ」と語り、セッションを締めた。

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2024 セッションレポート連載記事一覧

もっと読む

この記事の著者

中村 仁美(ナカムラ ヒトミ)

 大阪府出身。教育大学卒。大学時代は臨床心理学を専攻。大手化学メーカー、日経BP社、ITに特化したコンテンツサービス&プロモーション会社を経て、2002年、フリーランス編集&ライターとして独立。現在はIT、キャリアというテーマを中心に活動中。IT記者会所属。趣味は読書、ドライブ、城探訪(日本の城)。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山出 高士(ヤマデ タカシ)

雑誌や広告写真で活動。東京書籍刊「くらべるシリーズ」でも写真を担当。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社ARISE analytics

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19222 2024/04/18 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング