Martin Fowler が LLM を語る "私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです" "こうした非決定性の進化は、私たちの職業の歴史において前例のないものです" わかる
マーチン・ファウラー
大規模アーカイブの読み出し方法みたいな話?
“「非決定的なツールでプログラミングするとはどういうことか」という問い”
“非決定性”
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです。”
”アセンブラから最初の高水準プログラミング言語への移行と同じくらい、ソフトウェア開発を大きく変える”非決定性とうまく付き合う方法を見つけなければなりません。
そうか、ソフトウェアエンジニア側から言うと「決定的なのが普通」で、「確率的」は「非決定的」って言うんだ。それが一番この文章で衝撃的だったかも。
邪推で申し訳ないんだけど、「決定的」だったのは、コンパイラやインタプリタの出力(機械側の出力)の話であって、仕様やユーザー行動のことではないよ。決定的だからバグが定義できる。使用漏れとバグの違い。
「私がはじめて仕事でプログラミングしたのはFortran IVでしたが、「IF」文には「ELSE」句がなく、整数型の変数の名前は「I」から「N」で始めることを覚えておく必要がありました。」
プログラミング言語は10回くらいループとか曖昧な依頼もできない(できにくい)から
「私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです。(……)こうした非決定性の進化は、私たちの職業の歴史において前例のないものです。」
機械語やアセンブラしかない時代は知らないので、一番の激動。最初期のChatGPTの基盤モデルGPT-3.5は、入力トークン数は4096しかなかったんじゃよ、と孫に語る日が来るかな?
もともと世の中はあいまいさがあった。それを無理に枠の中に押さえ込もうとしてきたのかもしれない
『私たちは仕事でLLMの使い方を学びながら、こうした非決定性とうまく付き合う方法を見つけなければなりません。この変化は劇的なものです。私はワクワクしています。残念ながら失うものもあるでしょう』
SQL も大分抽象的な言語で、実行はプランナーとオプティマイザの機嫌次第だけど、実質そんなに困ってないし Prompt の非決定性もそんなに恐れなくてもいいかもしれない。
LLMはすべてのパラメータが同じなら必ず同じ結果を返却します。それは決定的です。決定的なものが非決定的に見えるのは,単に,LLMベンダーが乱数を与えてるからです。私はMartin Fowlerが何者であるかを知っています。
非決定的という意味ではLLMは「人」に近いという気はする。 / LLMには乱数がvendorから与えられてはいるけど、どのみち入力がほんの少し変わるだけで出力が大きく変わる可能性があるので、事実上の非決定性はあると思う。
非決定性
確かに困るな「プロンプトをgitに保存しても、毎回同じ振る舞いが返ってくるとは限りません」
何か言ってるようで何も言ってなくない?
ファウラー先生の言語化能力よ
“非決定的なツールでプログラミングするとはどういうことか” LLMは非決定的な抽象化を導入している
LLMは…抽象化…?ボクには猫缶の抽象化が大事なのにゃ!
そんなこといったらGPUの計算だって非決定的だというが(確認したことはないので伝聞だけど
あ、そ
ソースコードという決定的な土台の上に非決定的なレイヤーを積んでいるわけで、必要なら低レベルに降りて作業するのがまだ必須だけど、アセンブラと同様、これもいずれ大多数にとっては不要な技術になるのだろう
そういえばこれだけ多くのエンジニアがコーディングにLLMを使う話を議論しているのに、temperatureを0にして運用するべき、みたいな話ってあんまり見ないな。
ベンダー乱数に帰結したい人は…あーRails民なんか嫌ってそうじゃない。離散値入力に対しTemperature0固定されていないこと自体、自然環境の中でLLMを設計するコンセプトの意義を示しているのでは。非決定性は確かに面白い
"LLMは非決定的な抽象化を導入しているため、プロンプトをgitに保存しても、毎回同じ振る舞いが返ってくるとは限りません。"
確かに新しい抽象化と考えるとワクワクするな。
もっと引いた視点だけどもユーザー側もCD-ROMから入れてたコンスタントなアプリから、いつ仕様が変わるか分からないweb(スマホ)アプリ移行したし、LLMのご機嫌で部分的挙動が変わるアプリも受け入れられるかもしれない
非決定的であるとは言え、その結果を許容できる領域はある。今までもあったし、今後はより意識されるようになる。
"私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです"
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいる”
↓RDBMSのオプティマイザに機嫌があるように見えるなら理解が足りないだけではないか。/決定的にもできる。ベンチマークしたことは無いけど非決定的な出力をするように設定されているのは性能を引き出すためかな。
要するにLLMは実質非決定的コンパイラじゃないか、って話か。まぁそもそも大半のプログラムはコンパイラかデータ整形マシンではあるが
確かに要件や仕様を解釈する(アーキテクチャやコードにする)所が抽象化できるなんて数年前までは想像もできなかった/ファウラー先生がこれにどういう意味付けをするのか楽しみ
不確実性なら分かるけど非決定的ではないだろ。非決定的に見えるのはただ乱数シードを保存してないだけ
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです”
非決定性の視点
LLMは新しい抽象化をもたらす - Martin Fowler's Bliki (ja)
Martin Fowler が LLM を語る "私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです" "こうした非決定性の進化は、私たちの職業の歴史において前例のないものです" わかる
マーチン・ファウラー
大規模アーカイブの読み出し方法みたいな話?
“「非決定的なツールでプログラミングするとはどういうことか」という問い”
“非決定性”
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです。”
”アセンブラから最初の高水準プログラミング言語への移行と同じくらい、ソフトウェア開発を大きく変える”非決定性とうまく付き合う方法を見つけなければなりません。
そうか、ソフトウェアエンジニア側から言うと「決定的なのが普通」で、「確率的」は「非決定的」って言うんだ。それが一番この文章で衝撃的だったかも。
邪推で申し訳ないんだけど、「決定的」だったのは、コンパイラやインタプリタの出力(機械側の出力)の話であって、仕様やユーザー行動のことではないよ。決定的だからバグが定義できる。使用漏れとバグの違い。
「私がはじめて仕事でプログラミングしたのはFortran IVでしたが、「IF」文には「ELSE」句がなく、整数型の変数の名前は「I」から「N」で始めることを覚えておく必要がありました。」
プログラミング言語は10回くらいループとか曖昧な依頼もできない(できにくい)から
「私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです。(……)こうした非決定性の進化は、私たちの職業の歴史において前例のないものです。」
機械語やアセンブラしかない時代は知らないので、一番の激動。最初期のChatGPTの基盤モデルGPT-3.5は、入力トークン数は4096しかなかったんじゃよ、と孫に語る日が来るかな?
もともと世の中はあいまいさがあった。それを無理に枠の中に押さえ込もうとしてきたのかもしれない
『私たちは仕事でLLMの使い方を学びながら、こうした非決定性とうまく付き合う方法を見つけなければなりません。この変化は劇的なものです。私はワクワクしています。残念ながら失うものもあるでしょう』
SQL も大分抽象的な言語で、実行はプランナーとオプティマイザの機嫌次第だけど、実質そんなに困ってないし Prompt の非決定性もそんなに恐れなくてもいいかもしれない。
LLMはすべてのパラメータが同じなら必ず同じ結果を返却します。それは決定的です。決定的なものが非決定的に見えるのは,単に,LLMベンダーが乱数を与えてるからです。私はMartin Fowlerが何者であるかを知っています。
非決定的という意味ではLLMは「人」に近いという気はする。 / LLMには乱数がvendorから与えられてはいるけど、どのみち入力がほんの少し変わるだけで出力が大きく変わる可能性があるので、事実上の非決定性はあると思う。
非決定性
確かに困るな「プロンプトをgitに保存しても、毎回同じ振る舞いが返ってくるとは限りません」
何か言ってるようで何も言ってなくない?
ファウラー先生の言語化能力よ
“非決定的なツールでプログラミングするとはどういうことか” LLMは非決定的な抽象化を導入している
LLMは…抽象化…?ボクには猫缶の抽象化が大事なのにゃ!
そんなこといったらGPUの計算だって非決定的だというが(確認したことはないので伝聞だけど
あ、そ
ソースコードという決定的な土台の上に非決定的なレイヤーを積んでいるわけで、必要なら低レベルに降りて作業するのがまだ必須だけど、アセンブラと同様、これもいずれ大多数にとっては不要な技術になるのだろう
そういえばこれだけ多くのエンジニアがコーディングにLLMを使う話を議論しているのに、temperatureを0にして運用するべき、みたいな話ってあんまり見ないな。
ベンダー乱数に帰結したい人は…あーRails民なんか嫌ってそうじゃない。離散値入力に対しTemperature0固定されていないこと自体、自然環境の中でLLMを設計するコンセプトの意義を示しているのでは。非決定性は確かに面白い
"LLMは非決定的な抽象化を導入しているため、プロンプトをgitに保存しても、毎回同じ振る舞いが返ってくるとは限りません。"
確かに新しい抽象化と考えるとワクワクするな。
もっと引いた視点だけどもユーザー側もCD-ROMから入れてたコンスタントなアプリから、いつ仕様が変わるか分からないweb(スマホ)アプリ移行したし、LLMのご機嫌で部分的挙動が変わるアプリも受け入れられるかもしれない
非決定的であるとは言え、その結果を許容できる領域はある。今までもあったし、今後はより意識されるようになる。
"私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです"
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいる”
↓RDBMSのオプティマイザに機嫌があるように見えるなら理解が足りないだけではないか。/決定的にもできる。ベンチマークしたことは無いけど非決定的な出力をするように設定されているのは性能を引き出すためかな。
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです。”
要するにLLMは実質非決定的コンパイラじゃないか、って話か。まぁそもそも大半のプログラムはコンパイラかデータ整形マシンではあるが
確かに要件や仕様を解釈する(アーキテクチャやコードにする)所が抽象化できるなんて数年前までは想像もできなかった/ファウラー先生がこれにどういう意味付けをするのか楽しみ
不確実性なら分かるけど非決定的ではないだろ。非決定的に見えるのはただ乱数シードを保存してないだけ
“私たちは抽象化のレベルを上げているだけでなく、同時に非決定性という横方向にも進んでいるのです”
非決定性の視点