00:00
株式会社株区スタイルの後藤秀典です。この番組では、エンジニアリングチームで起きている問題について、技術、組織、ビジネスといった複数の観点で深掘りし、問題の正体へアプローチしていきます。
今回のテーマは、大規模言語モデルと不確実性の話です。前回に続きまして、今回もゲストに広木さんをお迎えしてお話ししていきます。
広木さんといえば、不確実性の話というところで、皆さんも思い当たる方が多いんじゃないかと思いますが、これと大規模言語モデルみたいな未来が合体したときに何が起こるのかな、みたいなところを今日は話していければいいなと思っています。
エンジニアリングマネージャーの問題集。
本日のゲストをご紹介します。株式会社レクター代表取締役で一般社団法人日本CTO協会理事の広木大地さんです。
広木さん、今回もよろしくお願いします。一言自己紹介をお願いします。
はい、広木です。よろしくお願いします。
前回、LLMチャットGPTみたいなところでいろいろお話を広げさせていただいたんですが、今回もその話またしたいなと思いつつ、広木さんといえばエンジニアリング組織論への正体、それから不確実性というところで、
今回はその原点というかそちらに少し立ち戻りながら、またLLMにも絡めながらというお話ができるといいなと思っています。
エンジニアリング組織論への正体で不確実性の向き合い方というか、構えだったり、どんな道具を使って不確実性と戦っていくのか、みたいなところをまとめて解説くださっているのかなと思っておりますが、
これ出版から何年か経っている今の時点で、広木さんから改めてアップデートとして、今の時代のソフトウェア開発組織が持つべき不確実性への新しい戦い方みたいなところって何か少しあったりするんでしょうかね。
ありがとうございます。そういう意味で言うと、不確実性に向き合うというのはいくつかの意味合いを持っていて、マーケットがどんどん波乱をして、文化の時代だと言われていて、その中でどう戦っていくのかっていう要素と、コミュニケーションの不確実性として他人の部分に対してどのように接して自分たちの認識を揃えてアウトプットしていくのかっていう、
この2つの不確実性っていうところにフォーカスをしながら、プログラミングであったりソフトウェアを作っていくっていうのは必要で、そのソフトウェアを作っていく工程っていうのは一体何なんだろうっていうのを僕の中でかつて自問自答をしていたときに、最終的に出来上がるものが非常に明石でかつ論理的で機械が解釈できるほどの曖昧性を持たないもの。
03:08
になっていくということがあって、ということは最初は曖昧で最終的には明快なものになるっていう過程で変化しているものが私たちが向き合っているものの正体なんだろうっていうふうに考えていって、それこそが不確実性であるというところからソフトウェアと不確実性の関係性を論じていくっていうことをして、このこと自体は実際には大きく変わっていないとは思っているものの、
JAT GPT LLM の登場も含めて考えると、実は明石な言語ではなくても、つまり自然言語とか曖昧性を持つものであっても、それらを機械が代替し実行するっていうことができるようにどんどん変わってきているという観点では大きな変化があるのかなというふうには思っています。
そういう意味でいうと、減らさなければならない不確実性の量っていうのは、ある意味減っていっているのだろうと。
曖昧な状況でも機械が動作させることができるということは、その分だけ曖昧な状態で、例えば最近だとそういうベビーエイジアデアとかオートGPTみたいに、目的からブレイクダウンしてタスクをこなしていって長期記憶を持ってみたいなエージェントのメカニズムがもうちょっとうまく作用するようになってくると、
いちいちツールとしてとかサーズとして完全に決定論的に動作するものじゃなくても、曖昧な例えば法律相談したいと思ったら、弁護士.comサービスを月1,000円で契約しておけば弁護士の代わりになってくれますと。
シャロウチ.comのサービスもないかもしれないけどもやったらそういうふうにやってくれますというふうに、各ロールの人を月額いくらかで雇ってその人に頼んだら吉野にやってくれるというふうになっていくぞってなったときに、曖昧なま相談させてくださいって言って相談させてもらってアクションを取ってもらうということにつながるかもしれなくて、
それはとっても作るもの自体がイージーになっていくというところはあると思います。ただこの流れって僕はソフトウェアの歴史そのものでもそうなんじゃないかなと思っていて、昔って何千万人が使うためのコミュニケーションサービスを作ろうとかって言ったら、
実際に物理サーバーを1000台近く並べて、そこに全てのアプリケーションをセットアップしてネットワークをつないでってやらなかったらできなかったことは、クラウドサービスを使って比較的一瞬でスケールし、そこのためのキャパシティープランニングとかをせずに作れるようになったりとか、
06:10
ちょっとしたHTTP経由のAPIを作ろうと思っても、昔は簡単なライブラリがなくて、一個一個丁寧にちゃんとフレームワークみたいなものを自分で作ってとかってやらないとアプリケーションを作れなかったものがだんだんとできるようになってきてとか、
ウェブ上でちょっとリッチなUIを作ろうと思っても、SPAのフレームワークみたいなものがなかったから、一個一個丁寧にHTMLを込まなきゃいけなかったっていうことがあったように。
昔から見て今振り返ると、どんどんいろんなものが簡単になっていて、どんどん減らさなきゃいけない不確実性の量がそもそも減っているっていうふうに捉えられて、結構比較的曖昧な状態であっても動作しちゃうというか、すごく簡潔に書けるようになったので、目的だけ書けばいいみたいな感じに変わっていったと思うんですよね。
これが加速していくんだろうなとは思うんですよ。その過程において、何が現実のプロダクトというか社会で起きたかというと、もっと複雑なものをコンピューターにやらせようっていうふうになっていったと思うんですね。
今までは昔のサイトとかって掲示板みたいなところにログインができて、一言二言書けたらもうそれだけでインターネット経由でコミュニケーションができるツールだったものが、今だったらリアルタイムに通話しながら音声も処理できるし動画も処理できるしとか、そこにもしかしたら背景を切り抜けなきゃいけないとか、顔を加工できなきゃいけないとか。
だから複雑なことがたくさん増えないと、何なのっていうツールになっちゃうわけじゃないですか。もし昔の掲示板CGIみたいなものが今ポンと出てきたら、背後はイーサリアームで動いてるんです以外に受け入れる理由がなくなっちゃうというか、そうなんですねって終わっちゃうと思うんですよ。
なので、たぶんどんどん複雑なものを作らなきゃいけないようになってくる。その分だけっていうことなのかなと思ってます。
今のお話って2つのことがあったのかなというふうに僕の中では解釈していて、ソフトウェア開発の歴史の中で、より目的に近い抽象的な命令というかやりたいことだけで、その周辺だけでソフトウェアが実行できるようになってきたみたいな文脈のお話と、最後にお話されていた、
とはいえでも目的に対して実現したい内容がものすごく複雑だというか、いろんな要素を含んだものになってきている。何か豊かなものになってきているというか、それを求められるようになってきているっていうような2種類のことがあるのかなと思う。
09:06
そちらの面でも抽象度が高いコミュニケーションなら、その下にある愚書の部分はいろいろ曖昧なままっていう意味での一定の不確実性はありつつも、以前の全てを自分で決定しなければならなかったときの不確実性と比べれば減っているというようなことですかね、そこは。
うんうんうん。よりだから抽象的な、人間がやりたいっていう目的に近いレベルでソフトウェアを作れるようになってきているっていうのは、その方向にどんどん進化していくっていうことでもあるので。
っていうと、今はChatGPTみたいなものでソフトウェアを作るっていうのがすごく曖昧に感じる違和感はありつつも、より正しい方向の進化だったりもすると言えるんですかね。
そんな気はしますよね。なんかあの、Pythonで書かれてるちょっとしたライブラリで、デコレーターで日本語とか自然言語を書くと、勝手に実装してコンパイルしておいて、なんかテストしておいてくれるみたいな感じのやつとかもあって、まだこれそんなに成熟してるもんじゃないですけど、
多分そのうち、そのプログラミングする予定でも、ちょっとした部分にそういった自然言語で、あとはよしなにやっといてっていうようなところが入ってくるのかなと思っていて、そんなようなものになるんじゃないのかなと思いますよね。
先ほどの2点目で触れられていた、実現したいものの複雑度というか、豊かさと言ったらいいのか、ちょっと適切な言葉が見つからないんですけれど、そこってやっぱりコンピューター自体の進化だったり、人間の求めるものっていうのが、より豊かになっているっていうところだと思うので、そこはそこでやっぱりどんどん複雑になり続けるので、
命令をよりピュアにしていくのと合わせて、でもやっぱり作りたいもの自体が、より時代に合わせた複雑性を持っていくっていうところだと思うので、ここ自体はなくなっていかないどころか、やっぱりもっと複雑性が増していくっていうことでもあるんですかね。
そう思いますね。それこそ銀の弾丸というか、ニンツキの神話にあったように、その偶有的な複雑性と本質的な複雑性に分けて考えることができるっていう話を本で触れてたこともあって、
その偶有的な、たまたまそういったシステムとして本来持っている性質ではない部分で複雑になってしまう部分というのはどんどん削減されていくけれども、システムとして、
本来持っている複雑性っていうのは維持されたまんまというか、複雑なまんまであるから、そこに対しての問題があるので、そういった開発って難しいよねっていうふうに書いてあったと思うんですけど、それはそんなに変わらないのかなっていう気はしますね。
12:15
確かに。よりソフトウェアというかコンピューターにやらせたい仕事が、人間社会のサイズ、複雑度まで上がっていくってことだと思うので、まだまだコンピューターにやってもらえてないところはたくさんあるでしょうから、どんどん増えていくんでしょうね、そこは。
個人的には、一人の株式会社だったんだ、みたいな感じになるんじゃないかなと思っていて、ある東西とか装置があって、それが気づかないけど完全オートメーションで実現されていました。
それは社会にとっての有益なものだから、勝手に成長していって、一定ラインまでマーケティングコストが支払われて、一定ラインまでは何か仕入れられて発送されてみたいなものが例えばあったとしたときに、気がついたら全部プログラム上で動いてました。
いうような形で、そういったある種、完全にソフトウェア化された事業っていうものがそのうち生まれてくるのかなと思っていて、そういうものをいろいろ売買したりとか、そういうものをフォークして売り買いするとか、そういう感じになってくるのかなという気がするんですよね。
面白いですね、それは。確かにそこまでは、そんなに遠くない未来にもうできそうな気もしなくはないですね。そこが全部ソフトウェアになっててリポジトリになってたら、めっちゃみんなフォークして自分の会社みたいに作ったりできるというのは結構面白いですね、エンジニアとしては。
背取りとか一番楽そうですよね。背取りとか、その越境で中国から安そうな商材で売れそうなものを独自のブランドにして、それをAmazonのプロフィルメントで売るみたいな。
そういうのを実は高校生がやってましたみたいな感じで、それを売却して、収益を減ってまた新しいのを作っちゃうんだよみたいな。
そうですね、もうそういったエージェントが勝手に何かをしている状態っていうのは、もう本当に遠くない気がするので、さらにそれを束ねて何らかの仕組みとして一つのソフトウェアとして動いている、会社として動いているみたいなところまでも確かにいきそうで、ワクワクしました今。
15:08
LLMは個人的一押し企業について語ったり、現場で感じる転職や中途採用のリアルについて話す音声番組です。毎週月曜朝6時更新です。通勤や休憩時間のお供にぜひお聞きください。詳細はカタカナでグリテンラジオと検索してチェックしてください。
それでは、ショートコミュニケーションブレイクです。
それでは、ショートコミュニケーションブレイクです。
いくつかの観点があると思うんですね。
一つは、ソフトプロンプトって言われるようなものが一個あって、それはプロンプト情報そのものじゃなくて、ベクトル化された状態の情報で勾配をつけてできるような、そういったベクトル情報だけで指示をするというようなことで最適化していけば、
プロンプトエンジニアリングしようと思った時に、いろんな語彙でこうやったらよりクリアに伝わるかなって思うんですけど、存在しない語彙は言えないじゃないですか。
Aという言葉とBという言葉を1トークンで表すちょうどいい言葉というのは、日本語にも英語にもないかもしれないけど、その間のベクトルの0.1だけ下がったものとかであればあるかもしれないですよ。
なので、こういったところである種ベクトル化されたプロンプトを最適化していくと、ちょうどいい指示っていうのは日本語でも英語でもできない何かなのかもしれないっていうのは存在し得て、そのほうは一定精度が上がるかもっていうのはあるんじゃないかなと思ってるんですよね。
それで相互にやり取りしてるから、エージェント同士のやり取りがよく見てみると何言ってるか全然分かんないから、AIが何言ってるか分かんないAI語で喋ってるってなってちょっと困るから、そうすると日本語に直して翻訳してみたいな感じで、ちょっとニュアンス違うんですけどみたいな感じで作られてるとかということはあるのかなっていう気がしますね。
18:10
そうですよね。まさに今おっしゃるように、あくまで今人間とやり取りするっていうインターフェースがくっついてるんで、日本語からLLMが理解するようなパラメータ群に置き換えるっていうところが裏側で起こってると思うんですけれども、そこを省いた世界っていうのはやっぱりどこかで現れてくるんだろうなという気もしているので。
画像生成系とかであれば、その途中で作って学習させたものをプロンプトとして参照させるみたいなことをしてるんで、そのキャラクターを抽出してそのキャラクターの要素っていうのをプロンプトとして指示出しできるみたいなことは仕組みとしてはあるんで、なんかそういうふうにちょっと曖昧な状態なんだけど保管できるものみたいなのは結構一般的になってくるかもしれないですね。
ここが非常に僕自身も興味を持っているところで、人間にとって理解可能だったり、人間にとってメンテナブルっていうような状態と、ソフトウェアに対して何をコンピューターに対して何をやってほしいのかっていう命令等が少し切り離された状態になっていくのかなと思っていて。
これまでのソフトウェア工学、ソフトウェア設計って命令がいかにそのものが人間がメンテナブルであるのかっていうところがいいソフトウェア設計みたいな話があったと思うんですけれども、そこがやっぱり少しずつ分離されて、より今後の言語モデルとして正しく望ましい動きをするっていうことと、それが人間に理解可能っていうところを切り離された議論とかになるんだろうなというふうに、繰り返しになりますけれども思ったりしてますね。
広木さん、今回もありがとうございました。お知らせなどありましたらお願いします。
一つはCTO協会のほうで6月14日、15日にDeveloper Experience Day 2023というイベントをやっておりますので、ぜひご参加くださいというところと、EMFっていうライバル番組をやらせていただいておりますので、ぜひご視聴いただければと思います。
広木さん、2回にわたってどうもありがとうございました。またお待ちしております。
今回も広木さんと一緒に大規模言語モデルと、特に不確実性というキーワード周辺でいろんなお話をさせていただきました。
本当にこれどうなるかわからないんですけれども、大規模言語モデルみたいな結構新しいパラダイムっていうんですかね。こういうものが出てきたときに、おそらくその不確実性っていうものへの向き合い方というか、そういうところも変えていかざるを得ないんだろうと。
私たちの態度みたいなものもアップデートしていかないといけないんだろうなというところで、新しい学びのチャンスみたいなものもあるんじゃないかと、個人的にはすごくワクワクする回でした。
21:08
広木さんと大規模言語モデルでマネジメントはどう変わるのか問題についてお話しした前回のエピソードもぜひお聞きください。
さて、この番組では感想や質問、リクエストなどお待ちしております。番組詳細欄にあるリンクよりお気軽にご投稿ください。
TwitterではハッシュタグEM問題集をつけてツイートしてください。EMはアルファベット、問題集は漢字でお願いします。
そしてApple PodcastやSpotifyのPodcastではレビューもできますので、こちらにも感想を書いてもらえると嬉しいです。
お相手は株式会社株区スタイルCOO兼CTOの後藤秀典でした。