Spinach Forest

March, 2023

/ Morning Spinach March   / A Story Writer   / It's Time to Get Back to Work   / McDonald’s Theory Of Bug Fix   / Morning Spinach: February   / ... 

Morning Spinach March

2023-03-01

  • 04:45. 昨日の昼間ミーティングで眠気を抑えるべくカフェインを採ったら案の定睡眠が mess されてしまった。
  • ぱぱっと Podcast 用意して出すべし。
  • いちおう一回くらい聞くか・・・。
  • 聞きつつ gdrive の使い方を調べましょう。
  • うごかねー :-(
  • もうめんどくさいのでブラウザからポイっと upload してみるか 50GB のファイル群を・・・。17 時間かかるらしい。クラッシュしませんように。なお上りは 1.5MB/s くらいです。しょんぼり・・・。
  • さて、このボランティア活動はこのへんで wrap up として、次なにやるかな・・・とメモを見直す。

Next Project: LLM 冷やかし活動

  • LLM 流行ってるしおもしろそうなので、教科書的には理解しておきたいなという気分がある。教科書的な理解というと曖昧だけど、学部生的理解とでもいえばいいかな。実践できるスキルや知識ではないが、それが何なのか一定程度わかっている、みたいな。CS 卒業してればボンクラでも仮想記憶とかプロセスとか GC とか一応わかっている、という程度に LLM というか language model というものを理解したい。マルコフ連鎖のごついやつでしょ、とか口走らないようにしたい。
  • 具体的には以下のような疑問に答えたい:
    1. なぜあんなにパラメタがクソでかいのか知りたい。アーキテクチャがわかればこの答えはわかると思うので、つまりアーキテクチャを把握したい。
    2. なぜマルチタスクに出来るのか知りたい。これむかし向井さんが BERT を紹介してくれたときに出てきたけど、よくわかんなかったのだよね。
    3. その他自分の知らない重要なアイデアがあれば、それも知っておきたい。
  • ステップとしては:
    1. 一般人向けにかかれた読み物を何本か読んで、心の準備と重要なアイデアをポップカルチャー的に把握する。願わくば重要な論文とかもリンクされていると期待できるので、そういう reading list も可能ならつくっていく。
    2. Reading list が揃わなかったら、なんらかの新しいサーベイを探す。ML 分野やたら論文あるので、きっとサーベイもあることでしょう。
    3. Reading list のうち重要そうな論文 (GPT-3 とか?) をよむ 。理解はできない。
    4. 理解するのに必要な論文を backtrack しながら読んでいく。
      ここで、いちおうその重要そうな論文は理解できたことにする。

と、ここまでできれば満足であろう。以下はストレッチ項目:

  • 大企業各社の出している LLM 関係の論文をいくつかひやかし、どういう違いがあるのか見てみる。
  • なんらかの実装のコードを読んで見る (nanogpt とか?)
  • 何らかの pre-trained な小さいモデルを持ってきて hello world してみる。

といったところかな。

2023-03-02

  • 04:05. さて本題に入る前に調べものがございますのでそれを軽くやります。
  • さてそれはいいとして一般向けLLM読み物を探しましょう。ちなみに HN search で適当にさがすというひどい探し方をしています。
  • 10 本前後あつまったが全部よむ必要があるとは思えないな。
  • 一本目:
    What Is ChatGPT Doing … and Why Does It Work?—Stephen Wolfram Writings
  • Wolfman Language に GPT-2 が入ってるの面白いな・・・。
  • Token のリストからの選択に乱数性をあらわす "temperature" というパラメタを使う。
  • GPT-2/3 以外の話は全部知ってる話で、肝心な話は具体性が足りなすぎてまったくわからない・・・。重みを二次元の画像として可視化してもなんもわかんないよ!
  • ただ GPT-3 でなく 2 (あるいは 1?) の論文から始めるほうがよさそう、ということはわかった。
  • 途中ですが時間切れ。

2022-03-03

  • 05:10. カフェインをとったわけでもないのに睡眠を mess してしまった。もう時間ないけど、ちょっとだけ読み進めるべし。
  • What Is ChatGPT Doing … and Why Does It Work?—Stephen Wolfram Writings 読了。あまりに philosophical であった。ただカッコだけの言語で train すると何が起こるか、みたいな実験は面白い。こういうのできたらよいね。あと Aligning language models to follow instructions も読むとよさそうなことがわかった。
  • 引き続きポップカルチャー読み物を消化していきます。
  • Large Language Model: world models or surface statistics?
  • なんらかの philosophical discussion だとうと思って読み始めたら、オセロの盤面で GPT を train する(とわりかし間違えずにオセロできるようになる)という話だった。面白いな。こういう用途なら手元で動くようなモデルでも遊べるかもしれない。
  • しかし model に介入するというところはよくわからなかった。まあいいです。

2022-03-04

  • 04:30.
  • How does GPT Obtain its Ability? Tracing Emergent Abilities of Language Models to their Sources
  • 正直この文章がなんなのかよくわかっていないが、HN にあったので。
  • In-context learning, Chain-of-Thought, Reinforcement-with-Human-Feedback など、どこかで聞いた単語が登場するが、なんなのだろうね。
  • コードで train するのがモデルの賢さを高めている、とか書いてあってほんまかいなという気になる (hard evidence はないらしい). 日頃からコードを読んで鍛えている我々プログラマ、普通の人類より賢いのでは!? (programmer supremacism)
  • めちゃ新しい論文がリンクされまくっており、みんながんばってんのね、ということがわかった。OpenAI ストーカーとして圧倒的実力を発揮しており素晴らしい。LLM というものを理解する上でこんなに OpenAI 中心にものを考えるのが良いのかはよくわからないが、ポップカルチャー的には正しい態度とも言える。
  • LLM だけじゃなくて、上に出てきた buzzwords もなんとなく理解したいもんだねーそのうち。
  • A Closer Look at Large Language Models Emergent Abilities

    • ちょっと寄り道して同じ人が書いたブログ(?)をもう一本読んでみる。
    • GSM8K という算数問題データセットがあるらしい。へー。そして OpenAI である。インターナルには 8M くらいもってるのでは。テックカンパニーは問題集の出版社でも買収して問題つくらせればよくね? (such a jerk!) MathQA というのもある。
    • 自分は math では LLM に勝てない気がするが、特に何の悲しみもないな・・・。
    • "prompting" と fine-tuning の違いがわからん。まあ何も論文読んでないので当然である。
    • [2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models これがメジャーなやつっぽい模様。Google いい researcher いるんじゃん。しゃちょーさんのご乱心にとばっちりして嫌気が刺さないよう気をつけてな。
    • OpenAI は ChatGPT 以外もそれなりに API-accessible にしていて偉いね。Google など他の大手もそうしないと、こうやって外野に評価してもられないのでは。
    • 先の記事の補足としてちょうどいい感じだった。よき。
    • On Emergent Abilities, Scaling Architectures and Large Language Models — Yi Tay
    • ついでにもういっこリンクされてたやつ。
    • 細かい LLM のアーキテクチャの違いとかでモデルを巨大化したときの "emergence abilities" の性能に差がつくことがあるが、そういうのってモデルはでかいし評価すべきタスクは色々あるしで評価するのが大変。困ったね、というような話。まあががんばってくれや。
    • しかし small model を fine-tune しても large model の "prompting" に勝つ日はこないなら、人類は PyTorch のことは忘れておとなしく OpenAI の API を呼べということだよな。

  • The GPT-3 Architecture, on a Napkin
    ちらっとみると、やはりこんなのよりは論文みとけという雰囲気である。
  • というわけで論文リスト
    Understanding Large Language Models -- A Transformative Reading List
  • GPT1 の論文がどれかわかってなかったが、これでわかった。めでたい。そこからだな。ついでに "RLHF" とかの論文もリンクされていてよい。
  • というわけで明日はいよいよ GPT1 です。読んでくぞー。

2023-03-05

  • 05:30. 起きられず
  • Improving language understanding with unsupervised learning
  • 掴みくらいはよんどくべ。
  • GPT = Generative Pre-Traiing か。その上で Discreminative Fine-Tuning をしろということらしい。
  • 肝心の transformer decoder は mountain view の方の論文を読まんとあかんらしい・・・
  • [1801.10198] Generating Wikipedia by Summarizing Long Sequences
  • Matrix を softmax にいれると u の probability が出てくるのがなぜかわからないこの math 力のなさ・・・。
  • チート記事と照らし合わせると自分は u を誤解しているな。これは次の単語の probability ではなく、入力の "decode" 結果なのか。しかしこれがなにを予測しているのかわからん。やっぱその論文よまないとだめだな。
  • 時間切れ。

2023-03-06

  • 04:05. やむにやまれぬ事情から前日午後 7 時にカフェインを摂取したため起きられてますが、昼間が辛い一日になることでしょう.
  • さて一番重要な 3.1 Unsupervised pre-training がわかってませんが、睨んでいてもわからなそうなので一旦論文を最後まで読み、そのあと理解に必要な資料を探すことにしましょう。登場する変数が説明されてないんだからわかんなくても俺のせいじゃねー。
  • さて fine-tune している各種タスクだが、微妙にわかるやつとわからんやつがあるね。Classification と Similarity, Multiple Choice までいいが、Textural Entailment とはなんぞや。そして Question Answering and Commonsense Reasoning もどうすればいいの?
  • Textual Entailment
    Textural Entailment は { Text, Hypothesis } -> {Entailment, Contradiction, Neutral} という問題らしい。
  • Question Answering, Commonsense Reasoning は Multiple Choice で、別に自然言語で回答するわけではなく選択肢を選ぶ。
  • どのタスクも "traversal-style" すなわち入力に特別な構造はなくて delimiter をつあって concat するだけ、かつ LM のあとも linear layer 一個だけ、という素朴な構造。この traversasl style は前例はあるが一般的ではないとしている。ですよねえ。無茶だよな。
  • training data は BookCorpus で、これはもともと smashwords という indie ebook サイトから無料なものをダウンロードしてきたらしい。Copyright は各著作についているが、常識的に考えて再配布できないですよね。しかし huggingface などで普通に配布されており、やべーなこいつら。まあいいです。Move on...
  • 比較されている他のモデルも何らかのデータで pre-train されているのかなあ。ELMO とはされてるんだろうけど。まあ、何らかの形でされているよな多分。
  • Zero-shot learning のスコア。Zero-shot learning ってどうやって可能なのか全然わかっていなかったが、創意工夫なのだね。Sentiment analysis. とか、[本文..., very] と feed して "positive" と "negative" の probability を比較するとかいっている。何でも zero-shot できるわけではなさそう。
  • でも Question Answering も zero-shot できるのか。クラウド業者が LLM as as service を売るときはこういう創意工夫が出来る程度には細部を expose してほしいもんです。OpenAI の API とか眺めればなにかわかるのかもしれない。
  • まあいいです。面白いね。
  • そして懸念である model の謎を解くべくなんかよむべし。
  • ところでふと文献を見ると Attention is All You Need は translation しかやっておらず、LM をつくった BERT は GPT のあとなのだね。競争の激しい分野である。

  • [1801.10198] Generating Wikipedia by Summarizing Long Sequences
  • "Transformer decoder" paper (のはず).
  • 要約をするにあたり元の文から word を extract するのではなく generative にやるぞ、という話らしい。
  • Wikipedia の引用記事とタイトルでぐぐった結果のページから Wikipedia の記事を generate する、というプロジェクトらしい。熱いな。
  • ところで今気づいたが GPT の parameter size のセクションをすっかりスキップしてしまったな。アーキテクチャがわかったら戻って眺めます・・・。
  • それにしても transformer まったく解説されていない!超不親切だな Mountain View の会社・・・。
  • 一方、LM の定式化が書いてあって気づいたが、もしかして GPT の出力にでてきた token の probability のリストは P(w_i|(...,w_{i-1})) 的な各 token の条件付き確立なのかな?それなら全部かければいいということになるが、そうなの?
  • まあいい。Transformer block を理解するには何らかのチートが必要。チートシートさがすべし。
  • 大量のゴミのなか、2,3 個はまともっぽいのが発掘された。ゆるそうな順に読んでいくべし。しかし今日は時間切れです。

2023-03-07

  • 04:07. やってくぞ!
  • [2207.09238] Formal Algorithms for Transformers チートシート論文。
  • "The reader is assumed to be familiar with basic ML terminology and simpler neural network architectures such as MLPs." MLP くらいならわかる気がするよ!
  • "Despite their popularity, it seems no pseudocode has ever been published for any variant. Contrast this to other fields of computer science" そう思ってたのあたしだけじゃなかった!
  • "Some 100+ page papers contain only a few lines of prose informally describing the model [RBC+21](...) No pseudocode. No equations. No reference to a precise explanation of the model." そうだそうだ! もっと言ってやれ!
  • 期待が高まるじゃん。
  • Tokenization - 色々あるが "Byte Pair Encoding" が人気。そのうちひやかす。
  • positional embedding / encoding って昔は sin とか謎のハードコードだったけど、今は learn するのだね。
  • "It will be useful to define the softmax function for matrix arguments" そうですよね。
  • GELU ってなに....というと、モダン ReLU なのか:
    [1606.08415] Gaussian Error Linear Units (GELUs)
  • GPT のアーキテクチャわかった。この paper は神。
  • 明日もう一本くらい補足資料を読みたい感じだな。
  • 社内名簿をさがし、著者に「神論文でした!ちょうさんくす!」とメールしておく。

2023-03-08

  • 04:40.
  • さて昨日の Phuong-Hutter 論文を改めて軽く眺めます・・・。
  • Encoder-Decoder, Encoder-only, Decoder-only と三種類もあるのに混乱しかけていたが、冷静に考えるとまあ納得だよな。
  • E-D は翻訳なので、まず原文を encoder した上で、encoded な原文を参照しつつ翻訳を generate (decode) していくわけだ。そして原文は全部みえていいから mask せず、翻訳は先を見たらチートなので mask する。
  • Decoder-only も別に違和感はない。
  • 奇妙なのは Encoder-only で、何が奇妙かというと mask しないので先を見てしまっていることだよな。だから BERT の task は穴あき文を埋めるみたいなヘンな構造をしているのだね。Decoder-only の方が自然な感じがする。だから良いかと言うと、知らんけど。
  • Decoder-only にしても、ちょっと不思議だよね。出力は単語の出現確率のリストで、リストの一番目は一番目の次(つまり二番目)の単語の予測、二番目はの出力は三番目の予測 .... N 番目の出力は N+1 番目の予測となっている。そしてほしいのはこの N 番目の出力だけである。なぜなら一番目の予測である二番目は入力に含まれているのでわかっているからである。
  • にもかかわらず、loss の計算にはN 個目だけでなく全ての出力を使っている。N-1 個までは答えを知っているから(モデルの作りによっては)答えをチートしてしまえるはずで、でも mask で隠してあげているからチートはしていない、という紳士協定(?)によってこの loss が成立している。N だけ使うのじゃダメなのかな?まあ全部使ったほうがお得な感じはするけれども。
  • まあいいです。この論文は印刷したので手元においておくべし。
  • GPT-2 に戻りたいが、その前にこの論文と似たようなブログ記事を冷やかすターン。
  • The Transformer Family Version 2.0 | Lil'Log
  • 自分には advanced すぎる内容だが、attention span を長くするために人々が色々な工夫をしていることがわかった。色々ありすぎるので、GPT-whatever などの自分が読む論文に出てきたアプローチだけを理解するくらいで良いでしょう。

  • Better language models and their implications -> Language Models are Unsupervised Multitask Learners
  • GPT-2!
  • "language provides a flexible way to specify tasks, inputs, and outputs all as a sequence of symbols. For example, a translation training example can be written as the sequence (translate to french, english text, french text)." ずっとこういうビジョンでやってたのだねえ。類似研究もあるらしいし。
  • "To do this we only scraped web pages which have been curated/filtered by humans. Manually filtering a full web scrape would be exceptionally expensive so as a starting point, we scraped all outbound links from Reddit, a social media platform, which received at least 3 karma. This can be thought of as a heuristic indicator for whether other users found the link interesting, educational, or just funny." Web はゴミばかりなので WebText というクロールデータを集めるにあたっては Reddit を頼りました。ウケる。
  • Tokanization は例の Byte Pair Encoding だが、なんかいじってあるらしい。GPT1 は spacy の実装を使うだけだったので、素朴だったね。
  • "2.3. Model" はちょうあっさりで、GPT1 をすこしいじりました、としか書いてない。いいんだよ絵で書いてくれても・・・。まあいいです。
  • Q-and-A system のデータセットでは 4% 正解。これは相対的には大したこと無いが、たまに答えが返ってくるのはまあ、面白いよな。Hugging Face で試してみたら全然答えてくれないけど、なんらかの conditioning が必要なのだろうか。
  • "the zero-shot performance of GPT-2 is still far from use-able" 四年前はこんなかんじだったのだねえ。
  • LM による Generative vs 従来の ML の Extractive というテーマがあるわけだが、generate するってめちゃ語彙あるよな、という素朴なびっくり感が未だに拭えない。そうした無限の語彙(というのは token レベルじゃなく compound なレベルで) から確率的に言葉を紡ぐのだねえ LM さんたちは・・・。
  • しかし Q&A 含む各種タスクをどうやって GPT2 に feed したのか全然書いてないな。そういう "prompt engineering" のやり方がキモなんじゃないのかね。結果だけ載せてさ・・・。
  • やっぱ学会通した paper でないと単なる企業ブログやプレスリリースとかわらんねえ。しかし大企業の AI 部門が出すこの手のデカデカモデル訓練終了のお知らせは学会通す気ゼロなので、あまり真面目に読んでも仕方ない。
  • 明日は GPT-3 をやる気なく読みます。

2023-03-09

  • 04:50. 朝起きる気合が足りてない。眠くはないのだが・・・
  • さて [2005.14165] Language Models are Few-Shot Learners
  • うげ 75 pages か。長いな。
  • お、in-context learning という言葉をつかっているぞ。GPT-2 みたいなやつのことなのだね。
  • Sparse Transformer というのを使っているらしい。
    [1904.10509] Generating Long Sequences with Sparse Transformers
  • GPT-2 と違い、Common Crawl というデータセットを cleanup して使う。"The Common Crawl corpus contains petabytes of data collected over 12 years of web crawling. ". 10 年以上前からあるのだねえ。これが S3 にしかなくて GCP においてないあたり、GCP の頑張りのなさを感じるよな。Public data はぜんぶミラーしてくれ。なお使ったのは最近の 45TB ぶんで、フィルタしたあとは 500GB. べつに petabytes 使っているわけではない。その 500GB や WebText を公開しないあたり、Open じゃない AI であることよ。
  • あとは例の Reddit からリンクを集めた WebText も引き続き利用。
  • training は "we use a mixture of model parallelism within each matrix multiply and model parallelism across the layers of the network" って行列の掛け算すら単一 GPU に収まらないのか・・・どんだけ・・・。
  • Chapter 3 はひたすらテスト結果の紹介である。モデルサイズによってビューンと伸びるものもあれば、収束してるっぽいものもありますねー、Zero-shot とくらべると Fw-shot はいいですねー、というのの繰り返し。
  • Fire 3.16, 英単語の意味を教えて例文を書かせる。やー GPT 単語帳やりたいなー。それと Anki があれば英単語暗記は solved problem for-free じゃん。
  • Limitations. "samples still sometimes repeat themselves semantically at the document level, start to lose coherence over sufficiently long passages, contradict themselves, and occasionally contain non-sequitur sentences or paragraphs." 人々が騒ぐ以前に登場時点から既知である。
  • "scaling pure self-supervised prediction is likely to hit limits, and augmentation with a different approach is likely to be necessary." それがあこのあと出てくる論文たちということなのだろうねえ。というか "Promising future directions in this vein might include learning the objective function from humans [ZSW+19a], fine-tuning with reinforcement learning, or adding additional modalities such as images to provide grounding and a better model of the world" すべて予告されている。
  • "Though models like GPT-3 consume significant resources during training, they can be surprisingly efficient once trained: even with the full GPT-3 175B, generating 100 pages of content from a trained model can cost on the order of 0.4 kW-hr, or only a few cents in energy costs." よくコストで騒いでるけど、実際は言うほどでもないのかな?
  • とにかくでかくしたら色々できるようになった、という論文だった。アーキテクチャには新しさはないかもしらんが、他社に先駆けサイズをバーンを 10x することでいち早く新しい知見を導いて競合を引き離したのはビジョンがあってイノベーティブと言ってよいのではないだろうか。
  • GPT-2 の論文よりはたくさん context (prompt) の例が載っている。
  • 時間切れにつき今日はここまで。明日は reading list 再整理かな。

2023-03-10

  • 04:20.
  • Figma のリクルータからメールが来た。あのひとたちこのご時世に hiring してんのね。しかし wasm だってさ。なんも知らん。
  • さて GPT-3 のあとに何を読みましょう。
  • 要素技術 (Byte Pair Encoding, Sparse Transformer) を読んでみたい気もするが、細かい話なのであとにすべし。
  • In-context learning はじめ様々な buzzwords についての論文を読んでいきたい気もするが、なにしろ量が多すぎてどこから始めたものやらである。
  • まずは OpenAI の GPT-3 改善論文を探し、一旦 ChatGPT までたどり着くのが良い?
  • チートシート Illustrating Reinforcement Learning from Human Feedback (RLHF) 論文いっぱいあるなー・・・。まずこのチートシート自体をよむか。
  • "Proximal Policy Optimization" (PPO) という RL アルゴリズムがあるらしい。
  • KL-divergence...そのうち読んで表面的に理解してあげるからね... しかしそんなには重要でないっぽく、ある種の regularization factor として使われている。
  • Human feedback は集めると "reward function" を作れるらしいが、まったく自明でないな。
  • Human preference の他に well-written text も必要とされているが、よくわかんないなあ。
  • 勤務先も human feedback を社内で集めていると報道されているが、レイオフ真っ盛りのなかでそんなん知るかよって感じだよな。ほんとちぐはぐだよね。まあいい。
  • LM に対する RL はかなり early phase という感じで、ぜんぜん決定打はない模様。色々読んでバリエーションを理解するのは難しそうなので、OpenAI のやってるやつだけよむことにしょう。ただ RL をまったくわかってない問題があるね。いちおうInstructGPT の論文を読み、そこから参照されている RL 関係の論文をよむ、ということにしておこう。RL はそのうちちゃんと勉強したいと思いつつはや 五 年くらい経ってますねえ・・・これなー・・・。PPO が出てくるなら読んでみるかとおもったが、検索しても載ってる様子なし。
  • しかし!OpenAI がオンラインに RL チュートリアルを書いてくれている!Introduction — Spinning Up documentation これをそのうちチラっと読もうではないか。

  • Aligning language models to follow instructions
  • さて InstructGPT です。また 70 pages くらいある・・・
  • データのラベル付け(詳細はあとで出てくる)、模範解答の執筆、比較採点。ずいぶん色々人間にやらせておる。API から submit された模範解答(を submit できるのか)も使ってるというので、機密データを OpenAI に渡すのは微妙?どのAPIなのだろうな。
  • ”Alignment tax" Instruct すると instruct の対象になっていない NLP task のスコアが下がる。なんらかの小細工で tax を減らせる。
  • OpenAI 自身の prior work: [2009.01325] Learning to summarize from human feedback
  • まず prompt をあつめるのか。これが API に submit されたデータ。出所は playground (もう存在しない) なので、さすがに paid customer のデータは使っていなかった。
  • 採点にせよ模範解答にせよ、このデータセットの質は超重要なのでは・・・。Crowdsource ではなく contractor を使っている。そのうち正社員を雇うようになりそうね。訓練用模範解答書くとか普通のラベル付け以上に心が摩耗しそうだが、Language model を自分色に染められるならアリか?この論文では数万件のデータだけど、たぶんもっとほしいよね。でも upwork とかじゃなくてもうちょっと出所のしれた人間を雇える方が良さそうだが・・・。
  • Labeller に "sensitive topic" への繊細さなどをチェックする採用試験があるらしい!世紀末感あるな。Appendix B を見よ。
  • Labeller, ゲームや映画の staff roll みたいなかんじで about ページとかに名前を載せてあげればやりがい搾取できるかもしれない。
  • Reward Model は小さめ (6B) の LM の最後をちょこっといじってスコアを出すようにした上で train するらしい。なるほど。

  • 一応ざっと眺めたが、この paper は何が新しいのだろうな。
  • 最初の模範解答による supervised fine-tuning は・・・Fine-tuning である。これは昔からやられている。
  • ということは、回答を比較してランクづけし、そこから Reward Model をつくり、それをつかって RL する、というところがあたらしいのだろうね。なんとなくそのランキングのデータがあれば RM+RL を介さず LM を直接 train できそうなものだけれど、そうでないのはなぜなのかな?なんか differentiable にできない側面があるのだろうか。
  • というか、模範解答全体に対するランキング・スコアを、トークン単位での生成結果にフィードバックするというのはどういうかんじなのだろうね。というと、RM も per-token なのだろうな。でもランキングは per-token ではついていないから・・・よくわからんな。
  • ただ模範解答づくりよりは採点作業の方がコストは低そうである。
  • 時間切れ。

2023-03-11

  • 04:13. すこし雑用があるのでそれを先に。
    • さて。これでひととおり ChatGPT まで追いついたと言えるのではないか。次何読もうかな。
    • まず取りこぼしリストがあります。Byte Pair Encoding, Sparse Transformer.
    • 取りこぼしリストの大物に RL / Policy Gradient / PPO がありますが、RL 勉強するのはかなり気合と時間が必要そうなので、このシリーズの中ではやりたくない。
    • 色々なバズワードの把握状況:
    • In-Context Learning. これが何かはわかった。ただ世間は「なぜ In-Context Learning が可能なのか」について色々研究しており、そういうのは一本くらい読んでも良さそうである。
    • Chain-of-Thought. これ一連の論文では登場しなかったけど、よく見かけるのはなんだろうね。
    • Reinforcement Learning with Human Feedback. InstructGPT でだいたい気が済んだ。他の人たちがやってるバリエーションもあるっぽいけど、まそれはいいかな。[2210.11416] Scaling Instruction-Finetuned Language Models くらいは読んで良いかもしれない。
    • Prompting/Prompt Engineering. これは GPT-3 登場直後くらいから流行り始めた単語でそれなりに論文もあるが、なんか意味あるのかね。要するに In-context learning を上手にやる tips みたいな話で、モデルを finetune してしまうのに比べると小手先感があるようにかじるが・・・。まあなんか一本くらい読んで気を済ませて良いかもしれない。
    • Multi-modal modeling. これがきっと next frontier なのだろうねえ。ちょっと cutting edge すぎて腰が引けるので、まずは他のバズワードからだな。
  • といったところですね。他に読んでみたいエリアはあるか、というと他社の LLM の進捗だな。Meta, Google/Deepmind, etc. まあそれも buzzwords 把握後である。
  • というわけで、まずはどうでもよさそうな prompt engineering についてなんか読んでみましょう。山のようにリンク集がありますね・・・。
  • dair-ai/Prompt-Engineering-Guide: Guides, papers, lecture, and resources for prompt engineering この辺をよむか。
  • まあよくまとまっており、論文のリンクもあり、なかなかよいね。
  • Chain-of-Thought は prompting の文脈で登場するものらしい。
  • ChatGPT というセクション、面白いけど、結局 prompt engineering はベースにあるモデルのデザインによってあっさり無効化されがちで儚い分野だよなあ。ピュアな自然言語でなんかやろうとするより、OpenAI が ChatML でマークアップして構造を与えた prompt で finetune / "instruct" した方が圧倒的に効率的で、そういうのにうまく乗っかる方がよっぽど大事じゃない。
  • ところで chatgpt などが会話の文脈を覚えているのが前は不思議だったけれど、API みると自明だね。つまりコンテクストに履歴を詰め込んでいる。API が UI に比べていいところは、失われてほしくないコンテクストを明示的に残しておけるとこだね。
  • 要約システムみたいのを併用するとコンテクストにある程度長い会話を詰め込めそうである。以前はそういう "コンテスト" は謎の embeddding みたいのになるのだろうと想像していたが、ふつうに自然言語として要約コンテクストを作る時代の方が先に来そうだな・・・。
  • まあ ChatGPT はいいとして、リンクされている興味深そうな論文:
  • [2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models Chain-of-Thougt 論文
  • [2101.00190] Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • [2104.08691] The Power of Scale for Parameter-Efficient Prompt Tuning
  • CoT はあとにとっといて、まずもうちょっとしょうもなさそうなやつをよむか。

  • [2101.00190] Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • おもったより面白い話だった。LLM を finetune すると重みがでかくて保存コストなどがかかるので、finetune するパラメタをモデルの外に持つ、という line の研究で、これはなんと入力の sequence の冒頭に "prefix" という形で trainable な embedding をつけるのである!In-context learning で prompt を工夫する、というのを finetune としてやる。よさそうじゃん。
  • ただしモデルにアクセスできないとこういう小細工はできないので、OpenAI のひとが GPT API にこういう fine-tune を口を用意してくれる必要がある。
  • というか OpenAI の API は finetune の口があったはずだけど、どうやってるんだろうね。ChatGPT のモデルは finetune できないけど GPT3 はできたはずで、このレイヤにあるどのくらいのパラメタを unfreeze してくれてたのだろうな。
  • いずれにせよやはり純粋な prompt-engineering はしょぼい、という印象を強調する論文であった。
  • [2104.08691] The Power of Scale for Parameter-Efficient Prompt Tuning
  • "Our method can be seen as a simplification of the recently proposed “prefix tuning” of Li and Liang (2021)" あ、そうなの。
  • ここでもやはり LLM ではモデルまるごとを finetune するのが普通と言っており、そんな気もするけれど、しかしそれはやはり GPT-3 が API ごしに finetune できるという事実と相反する気がするのだが・・・。まああいつらはなんらかの unpublished way で space saving やってるのだろうね。ChatGPT model を finetune させてくれないのはちょっと不思議だけど、単に忙しいとかそいう大したことない理由なのでしょう。
  • 論文つづき・・・をよむには時間切れ。

2023-03-13

  • 04:17. 昨日は夏時間時差ボケでダウン。今日も眠いがやってくぞ。
  • karino2 が bing を褒めており、改めて Bing や Neeva について考える。こいつらは (Neeva では当たり前だが) ChatGPT ではないよな。そのモデルを使ってはいるだろうが。Neeva AI が出てきたときは引用が表示されて ChatGPT との違いにびっくりした (ChatGPT のような "AI / Language Model" は引用はできないと人々は言っていたので) けれど、サーチエンジンと組み合わせればまあ、できても不思議はないよね。そしていくつか論文をよんでわかったのは「要約」というのは LLM というか NLP ではよく研究された分野なのだった。Decoder Transformer にしろ RLHF にしろもとの論文は要約が題材なわけじゃん. Decoder transformer なんて引用とタイトルからWikipedia 本文を生成するという研究で、ある意味 search bot そのものである。とはいえこういうのはリサーチの話で、Bing はそれを製品まで持っていったのが偉かった 。報道からうける印象とちがい、単に ChatGPT 別のガワをかぶせたものではない。Neeva は先行したのはよかったが、ベースにある LM がへぼかったのかなんなのか、力不足で惜しかった。ただ Bing が API の値段を 10x したのは、Bing API と OpenAI API があれば Bing bot はわりかし実現可能だとわかっているからじゃないかな。Google も Bard なてやってないでサーチ頑張るべし。
  • といった与太話はさておき、続きを読んでまいりましょう。
  • んーむ自分の読解力では一本前の "Prefix tuning" とこの "Prompt tuning" の違いはわからないな。まあメインのモデルをいじらず入力につっこむシーケンスの一部分を learn するアプローチがなら cost effective に LM の finetuning が可能、というくらいまで理解できれたのでいいです。はい。
  • こういうのは OpenAI のような hosted model なら彼らが対応してくれればできるししてくれなければ終了だが、相対的に小さいモデルを手元で動かす場合は自分で実装できないといけないので引き続き AI 人材スキルは引き続き重宝されそうである。遊びではそもそも finetune 用の training data が揃えられないので few shots / in-context でがんばるしかない。
  • つぎ。

  • [2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
  • Chain-of-Thought! Buzzword イエーイ!
  • GMS8K, 何問か自力で解いてみる必要があるな・・・ openai/grade-school-math
  • Chain-of-Thought を annotate する人によってスコアが違う。当たり前だが面白い。そして Google Brain で働くエーアイ人材くらいの知性がないと良い chain-of-thought がかけないのだとしたら・・・?エーアイ人材はともかく塾講師が副業で chain-of-thought を提供する時代は近いな。
  • 「自然言語で思考過程を書くと AI が本気だす」というアイデアのわかりやすさ(+素人にも真似できそうな感じ) と GMS8K で SOTA というインパクトの組み合わせが buzzword worthy な論文であった。
  • 次は CoT を learn して finetune ... みたいな話がでてくるのでしょう・・・。
  • Prompt-Engineering-Guide/papers.mdx at main · dair-ai/Prompt-Engineering-Guide · GitHub しかしこのページにある "prompt engineering" 論文の量産ぶり、おまえらちょっと落ち着け・・・というかんじである。あまり深入りしないでおきたい所存。

  • 若干おなかいっぱいなので reading list を整理してよむもの考えましょう・・・。今日はここまで。

2023-03-14

  • 04:58. 寝坊.
  • In-Context Learning 与太話ちょっとよむか・・・
  • "Emergent Behavior" あるいみ buzzword だな...

  • How does in-context learning work? A framework for understanding the differences from traditional supervised learning | SAIL Blog
  • Prompt は Bayesian 的に解釈できるなぜなら language model というのは条件的確率だからである... みたいなことを様々な実権などから主張している... のだろうか... むずかしい。
  • Solving a machine-learning mystery | MIT News | Massachusetts Institute of Technology
  • LLM の中には linear model が隠れているよ・・・とは・・・。
  • [2211.15661] What learning algorithm is in-context learning? Investigations with linear models
  • 記事から参照されている論文。めちゃ math である。LM のレイヤ一つが計算の 1 演算を代替できると主張している。そうかい・・・。GPT-3 は 100 レイヤくらいなので、そのくらいのステップは進められるということだろうか。
  • [2212.10559v2] Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers
  • 似たような趣旨の論文 from MSR.
  • "As shown in the above equations, the attention to the demonstration tokens is equivalent to parameter"
  • やはり式を追う気力 (math 力) がないが、Attn(V,K,q) が update の step になっている、という主張に読める。なんか self attention だといまいちそうじゃない?一般に、こういう in-context learning に強くするアーキテクチャ上の選択というのはありそうだよな。パラメタ数をでかくするだかけではなくて。一方、そういう ICL に強いアーキテクチャが一般的に良い LM なのかというと・・・まったくわからないね。そいうアーキテクチャの自明でなさを指摘した論文をどこかで読んだ気がするが、どれだったかな・・・。
  • とおもってインターネットを探していたら・・・
  • Jason Wei | LinkedIn CoT はじめ重要論文を書きまくっていた Google Brain のスターが OpenAI にとられちゃってますねー。あーあ。まあ選べる身分ならレイオフするような会社では働きたくないよなあ。しゃっちょーさん、いくら節約したか知らないけど星が散っていくのが見えてるかい。
  • まあいいです。これにて CoT のひやかしを終了いたします。
  • [2212.06713v1] Structured Prompting: Scaling In-Context Learning to 1,000 Examples これが残っていたので abstract だけ眺めるが・・・ prompt に 1000 example をつっこむためにすごいアーキテクチャにしてみたよ、という話であった。いや 1000 もあるなら finetune すればいいのでは・・・という気になったところで終了。
  • リストが完全にはけました。これにて CoT のひやかしを終了いたします。
  • 本日はここまで。

2023-03-14

  • 04:23.
  • さて GPT-4 が発表されたので technical report を冷やかしましたが、びっくりするほど何も書いてないねー・・・。GPT 論文シリーズここに極まれりという感。ただ aurhorship のセクションが社員の名前全部書いてるんじゃないかという勢いで、総力戦なのはよくわかる。そりゃ企業秘密は話したくないでしょうな。リサーチャーも下手に論文書くより GPT-x やってましたという方が箔が付く勢いだろうし。
  • context length が 32k! に伸びたのと multimodal なのが表から見える範囲の特徴なので、とりあえず multimodal の論文を読んでいきましょう。ぱっと調べた範囲だと Google の PaLM-E, Deepmind Gato, Microsoft Kosmos-1 というのが目についたので、Kosmos-1 を読んでくぞ。なおそのほか Visual ChatGPT というのもあった。

  • [2302.14045] Language Is Not All You Need: Aligning Perception with Language Models
  • MetaLM という自社内前例があるのか・・・。
  • ChatML みたいにマークアップするのだね。<image> とかなんとも・・・。
  • 画像は "Vision Encoder" と "Resampler" を使って embedding にするそうです。積読スタック伸びてくぞ・・・。
  • Base-model は Magneto という MS GPT みたいなものらしい。各社持ってるわけだねオレオレ LLM を...
  • "Intealeaved data" すなわち画像を埋め込んだ HTML のテキストみたいので learn するというのは・・・なんかタグのまわりのテキストを画像検索に使おうみたいな話だよな。
  • training ではなぜか github/archive/so を外している。なぜ?こういうテキストでテストをしたいからかな?リサーチ論文というかんじである。商用化するなら全部突っ込むわけだが、MS products は OpenAI を使っているので今の所はアカデミックな態度を取れるのだった。読者としてはめでたい。
  • Image Representation は CLIP を使うと書いてあるが、それは "Vision Encoder" とかとは違うのかな・・・?画像周りの知識がゼロすぎる。
  • "The total number of parameters of KOSMOS-1 is about 1.6B." デカデカモデルを作るという話ではないのだねこの論文は。
  • InstructGPT 以来 "instruction dataset" というのが色々揃っているらしく、Flanv2Unnatural Instruction といった公開データセットを使っている。ふーん。
  • "Image captioning" を評価している。考えてみるとこれって stable diffusion とかがやってることの逆だね。そして captioning の ML はけっこう前からあった気がするけれど、そういうのはどういう仕組みだったのかねえ。
  • OCR-free text recognition とかヤバイな・・・。ただし正答率は 67% か。言われてみればグリフの画像と読み方を対で入れれば読めるようになりそうですね・・・そういうデータセットに言及があったかな?。
  • Chain-of-Thought の例は見るたびに「単なるカンニングなのでは・・・」と思ってしまうな・・・。
  • わりかし面白かったです。デカデカモデルの話ではなく、Multimodal に絞っているのが良かった。1.6B でこれか、みたいな。
  • [2206.06336] Language Models are General-Purpose Interfaces
  • つぎは MetaML という元ネタ論文ね。
  • が、これはなんか無駄に複雑な割に知りたいことは特に書いてない。自分に必要なのは vision encoder と resampler らしい。しかし参照がよくわからん・・・
  • 一つ前の論文では "vision encoder" といい、この論文では "vision language encoder" と呼んでいる・・・。なんなのそれは・・・。
  • [2111.02358] VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts これかな? Big Tech は各社フルスタック(?)でぜーんぶ持ってますね。
  • OpenAI の論文引用されてるな。GPT-4 ファンクラブ的にはこっちをよむ方がいいのかもしれないね。まああとで。[2103.00020] Learning Transferable Visual Models From Natural Language Supervision
  • Related work. なんか決定的なアプローチのない分野っぽいね・・・ Computer Vision と Vision Language tasks が別々に議論されているが、どうちがうんですか・・・?後者がキャプションとかなのかな?しかしそれは前者の superset ではないの?
  • そして MS の LM Model Zoo Github をみると VLMo よりあたらしいやつあるっぽいじゃん。そっちのほうがいいんじゃね?というわけでこの論文はここまで。
  • MS stack は馴染みがなさすぎるので OpenAI の論文を見てみたほうが良い気もする・・・でも CLIP というのしかないね。2年前だけどこれ読めば良いのかな。そのあと PalM-E も冷やかしてあげよう。
  • 今日はここまで。

2023-03-17

2023-03-18

  • 04:15
  • さて今日は・・・税金やんぞ!
  • てか 2/22 にきてんじゃねーか書類!!!TT に騙されたクソったれ・・・めちゃ出遅れてしまった・・・。
  • 久しぶりにさわる Colab が納税用 1099 の CSV 化とか、もうね・・・。
  • この Notebook でやるのもう何年目かわからんけど、今年は PDF のフォーマットに変化がなかったらしく一発で動いてめでたい。なぜ TT はやってくれないのか・・・。まあいいです。
  • 納税終了。TT のせいで大幅に出遅れてしまい不覚。TT への hate は年々高まるばかりですが、通勤に使うバスが同じになるくらい近所なので憎みきれないのだった。テック企業はどこもある面ではろくでもない。仕方ない。
  • ついでに免許の更新もオンラインでできるっぽいのでやってしまうべし。
  • 済。一瞬でしたね。こんな一瞬なら勝手に更新して送ってくれやと言う感じだが。
  • It’s Time to Get Back to Work – Spinach Forest
  • GPT-4 paper が期待したものでなかった悲しみを綴るものなり。まあいいですよ。しゃーねえので PALM-E でも読みますわ後日・・・。
  • そういえば英語でブログ書くのだいぶ何でもなくなってきたな。もともと何でもなかった疑惑はあるとはいえ・・・。Design doc ぽくドライかつクリアに書くという当初の目標は失われているが、まあ、いいです。

2023-03-20

  • 04:09. さて...
  • CLIP: Connecting text and images 2021
  • "Contrastive Language–Image Pre-training"
  • ConVIRT というモデルを simplified したと言っている。
  • データセットはインターネットから持ってくる。WebImageText. これが高品質でデカイのが重要。
  • Contrastive objective ってなんだい・・・
  • N 個の画像xテキスト pair を用意し、NxN 通りの組み合わせについてそれらしさを predict させる。そして正解である N 個を除く NxN - N 個の確率を最小化する。なるほど。比較対照するから contrastive なのだね。
  • これはラベルやテキストをズバっと当てさせるより簡単なぶんトレーニングが efficient なのだという。へえ。
  • "InfoNCE loss というのをつかう: Contrastive Representation Learning | Lil'Log, Edit Post ‹ Spinach Forest — WordPress.com
  • Text と image は embedding を consine similarity にするだけというから、これらの encoder を learn させるのだねえ。
  • "image_encoder - ResNet or Vision Transformer" というわけで Vision Transformer がでてきたぞ!
  • "The text sequence is bracketed with [SOS] and [EOS] tokens and the activations of the highest layer of the transformer at the [EOS] token are treated as the feature representation of the text which is layer normalized and then linearly projected into the multi-modal embedding space." image と text の embedding なんて全然次元が合わないな・・・とおもっていたが、こうやって調整すうるのだね。
  • "we found CLIP’s performance to be less sensitive to the capacity of the text encoder." このタスクだとデカデカモデルは要らないのか。
  • ResNet と ViT を両方ためしているが、"For the ViT-L/14 we also pre-train at a higher 336 pixel resolution for one additional epoch to boost performance similar to FixRes (Touvron et al., 2019). We denote this model as ViT-L/14@336px. Unless otherwise specified, all results reported in this paper as “CLIP” use this model which we found to perform best." ということで ViT のほうが良かったのだね。
  • Zero-shot. class をtext として encode し、画像も encode し、cosine similarity をとっていちばんデカイのを選ぶ。まあこれはいいよな。
  • Text encoder, ラベルの曖昧さが問題になる (重機の crane vs. 鶴の crane, 犬の boxer vs. 格闘技の boxer). あとはただのラベルより "a photo of a {label}" と書いたほうがちょっと性能がでる。といった "prompt engineering" が必要。へー。
  • 面白いことは面白かったが GPT でいうと GPT-1 くらいの世代なイメージ。Zero-shot の性能も特別は良くない(ので色々と比較に苦しんでいる雰囲気がある。)ここから multimodal language model までは果てしなく遠いよなあ。2年間の間に何があったのだろうね。
  • はさておき、次は vision transformer でも読んでおくか。みんな使ってそうだから。
  • [2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
  • ねむい・・・

2023-03-21

  • 04:35. 4 時に起きると眠いというか、眠りの質が悪いな。晩飯を減らし、かつメラトニンでもキメるべきか。
  • さて podcast 採ったので出さなければ。
  • Reddit いじってるうちに時間を溶かしてしまった・・・。
  • Canva は間を開けると free trial を retry できるのか。いいんですかねそれは・・・。Canva は便利すぎるのでこの手のバナーやロゴを作るときだけ金払ってもいいなと思っているのだった。
  • 走りに行こうと思ったら、雨。筋トレでもしようかな。雨天に際し、屋内で早朝に脳内麻薬を出す方法は Supernatural 以来発明できていない。

2023-03-22

  • 05:01. Kindergarden の tech support をしていたらこんな時間になってしまったぜ・・・
  • A Story Writer – Spinach Forest
  • 金払って遊んでみた記。なんというか、CoT じゃないけど prompt 工夫しつつストーリー書かせるとか職業の危機みないた話はおいといて遊びとしてふつうに面白いよな。
  • 一方の Google は "You are invited to try Bard" とかいうスパムを送ってきて、見てみれば waitlist である。おまえら GPU だか TPU だか足りてんのか。Azure で借りてきたらどうですか。
  • さて Podcast 自分のターンの準備でもしますかね・・・。

2023-03-23

  • 04:28. Ubuntu の溜まった update を入れていたらこんな時間。
  • 引き続き podcast 準備。

2023-03-24

  • 05:06. メラトニンを飲んでみたら眠りが深くなり、寝過ごし。ただこれは総体ではよい気がするので今日ものむべし。
  • Podcast 準備。
  • ChatGPT plugins おや。Bing 的な外部資源要約の vertical version. いよいよ検索エンジンやばくなってきたな。そして WebGPT がこれの論文なのだね。あとでよむべし。
  • 準備ほぼ了。いつも後半にいくにつれて滑舌が悪くなっていくので、途中に「ゆっくりはっきりしゃべるべし」とリマインダーの行を挟んでみる試み。

2023-03-29

  • 04:55. 週末から子が風邪を引くなどで大人は捗らず。むしろよくぞ今まで dodge してきた、という感はあるけど。
  • そしてメラトニンはダメだな。眠くなりすぎる。朝起きられない。寝不足の眠さとは違うので慣れれば起きられるかなとおもったが、ぜんぜんダメ。
  • さて Podcast の準備をしていてやはり RL の付け焼き刃が必要だと思い立ったので・・・どうしようね。OpenAI のチュートリアルでもよむか。
  • Part 1: Key Concepts in RL — Spinning Up documentation
  • とばしすぎでよくわからんが、付け焼き刃とはそういうものです・・・・
  • Part 2: Kinds of RL Algorithms — Spinning Up documentation
  • わからん・・・。
  • Part 3: Intro to Policy Optimization — Spinning Up documentation
  • 引き続きまったくわからないが、結局 backprob で gradient を計算する、ということはわかった。では何が supervised learning と違うのかというと・・・正解はないが loss (に相当するもの) は reward を介して存在する、ということなのかな。
  • そして ML model との組み合わせ "Deep RL" という点では概ねこの model-free, policy optimization を気にしておけば良さそうである。
  • まだ全然わかっていないが、それでも以前よりは解像度が上がったので良しとします。はい。
  • Lil'Log ところでこの超便利ブログのひとは OpenAI なのだね。
  • Key Papers in Deep RL — Spinning Up documentation
  • 無謀になんか一本くらい読んでみるか・・・
  • [1602.01783] Asynchronous Methods for Deep Reinforcement Learning
  • ランダムすぎました・・・
  • Sutton & Barto Book: Reinforcement Learning: An Introduction
  • Chapter 13 Policy Gradient Methods に突撃してみるターン
  • 時間切れ。

2023-03-31

  • 子の風邪から身を守るべ睡眠を優先していたら三月が終わってしまった。やれやれ。父のためにもはやくよくなっとくれ。続きは来月。
  • 月初の計画よりは思ったより先に来ている気もするが、GPT-4 によって読むものは色々増えてしまったので引き続き読んでいきます。

A Story Writer

(Caution: This is yet another ChatGPT-4 experience report that everyone has been writing these days. If you don't like those, you'd better stop reading.)

My spouse had an idea: When we travel by airplane, it might be a good idea to record our reading-aloud of children's books. Although some audiobooks are available, the selection of Japanese child books is limited in the audio market. And we read these books every night anyway, so why not record them?

Inspired by that, I got another idea: Maybe we can generate some personalized stories for my daughter using ChatGPT and read it to her. My father once wrote one for me when I was a kid of, and I remember loved it.

Even better, I can possibly make a podcast based on these "AI stories". (What a stupid dad - you might think, and you're probably right.)

So I signed up for ChatGPT Plus, enabled GPT-4, and gave it a try.

It was fascinating and disappointing at the same time: It does generate some short stories. What it spits out might be too short with a vanilla prompt, but you can tell it to generate "chapter N" to split it up.

Besides the length, I have encountered a few other problems:

The first problem is that it stutters: It stops generating the text in the midst of a sentence. It feels like a bug. I hope they implement some backtracking to keep it moving.

The second problem - although I'm not sure if I should call it a problem - is the boredom of the story: What it writes is extremely stereotypical and boring. It is, however, probably by design. The role of the language model is to generate "most likely text", and that basically means being stereotypical and boring. In theory, OpenAI can "align" the model towards interestingness. But I'm not sure that's the direction they would like. (This is not about the "temperature" - the disturbance of the generated text. I don't think tuning the result less statistically likely makes the text more interesting. It would just make it more unintelligible.)

There is an escape hatch: You can mitigate the problem by explicitly directing the plot: Reject the boring part and ask for a retake. Give some clues on where you'd like to go.

Also, you can maybe ask for options for the plot first, then pick one of them to proceed. This "breast-first search" is something I'd like to try on the next iteration.

The third problem is more serious and for now a deal breaker to me: Its writing style is so cheap!

It's known that you can ask for the writing style of famous writers, like Haruki Murakami, if the author is famous enough that the crawler has a good amount of data to mimic. But our (Me and Yuko's) favorite writer of children's books, Miyoko Matsutani, doesn't reach that threshold. GPT-4 knows something about Matsutani and it tweaks the style a bit, but it's far from satisfying. After all, I'm very picky about Japanese writing style and probably don't care for "Internet Japanese" that GPT is based. I long for more boldness, beauty and authenticity. (What an old grumpy guy - you might think, and you're probably right.)

The situation will change once OpenAI opens up the fine-tuning capability of their new models, and once it does, I'll spend days and nights typing in Matutani's work for training... well, maybe scanning all the books to OCR or cracking the ebooks to scrape, or whatever.


One thing I haven't explored is the longer prompts: GPT-4 is known to be capable of ingesting much longer prompts than its older versions. My current prompts are a few hundred characters or less. It should go up to like a few thousand. (I'm not sure how byte pair encoding ingests Japanese text. My conservative guess is about one Japanese character per token.)

What should I ask to align the output to the Matsutani style? Is it even possible given her work isn't in the model's memory? Should I give some snippets as an example? I have no idea. It clearly needs more experiments and creativity.

Another possibility is to accept the "Internet Japanese" and the absurdity of the generated story, and push the model to the limit to see how crazy it can go. I'd never read it to my daughter, but it can be a great podcast episode. Maybe someone has already done that, but a few more is probably fine.

Despite the technical limitations, I consider my own creativity and taste as the largest limiting factors - How can I push the model hard? How can I judge the "interesting-ness" of the story? How to give it the right direction? It's a creative challenge that might be worth pursuing.

That said, I'm not sure if it's my kind of challenge. I should probably read more existing stories to my daughter using that time and energy: The stories are abundant out there, and the time with the little mine is a bit more scarse.


(For the record, here is my first attempt as a GPT-powered story writer. I'll report back if I get better.)

It's Time to Get Back to Work

Given both the competitive landscape and the safety implications of large-scale models like GPT-4, this report contains no further details about the architecture (including model size), hardware, training compute, dataset construction, training method, or similar.

gpt-4.pdf

“GPT-4 is not easy to develop. It took pretty much all of OpenAI working together for a very long time to produce this thing. And there are many many companies who want to do the same thing, so from a competitive side, you can see this as a maturation of the field.”

OpenAI co-founder on company’s past approach to openly sharing research: ‘We were wrong’ - The Verge

It dawned on me that they officially ended the era of AI as a research, and switched gears towards AI as a product. For many startups, AI has been a product, not a research, and OpenAI is one such startup, but they have pretended to be a research lab of a big tech company or an elite university. Although there have been signs of this shift, like not releasing the GPT-3 model to the public, they still kept publishing research papers and people loved it. Until now.

Another iconic line from the GPT-4 "technical report" is the Authorship section (p.15) - It looks a lot like a staff roll of a movie, and it asks: Please cite this work as “OpenAI (2023)”. This would never happen if it were a research paper. This signifies that GPT-4 is a product and the whole company has worked towards building it.

What does this mean? When their researchers have done the research-y stuff, it'll be folded into the next version of GPT and won't become a standalone research. No published paper that is.

And I think it is already happening. Look at the paper about the Vision-Language model CLIP. This is their early iteration of visual understanding and you can consider it a building block of multimodal models like GPT-4.

This paper is two years old. If they kept doing the "research", they should've been another paper for its successor. That didn't happen. There is no CLIP-2; they have built the progress into GPT-4 instead. This is how product development works: The innovations occur inside the product. (Compare this to MSR which has up to three generations of VLP models!)

After all, there are no papers about, say, Google's ranking algorithms (forget Page Rank), Facebook's feed scoring, Amazon's logistics, or Apple's CPUs. These are all the marvels of computer science achieved by smart Ph.D. people, but all have occurred in the products. Few papers (if not none) were written. GPT has morphed into one of these monumental products.

Am I disappointed? Definitely. Do I complain? Not really. Academic research has its limitation. Sometimes innovation needs a product. It needs a user. It requires real problems. It demands money to earn. That's why tech companies hire Ph.D. and let them write production code instead of academic papers.

The downside is that it mostly happens behind doors. This darkness however is worth it, at least for the innovating engineers and researchers themselves.

However, for us begging paper readers - It feels like the end of a great season. It's time to get back to work.

I still hold a hope: Someday, once this war is over and the victory makes the GPT gangs rich, one of them goes back to school, write a textbook about AI, in which there is a chapter called "History", and they share their retrospective as an insider: What they did right. What their peers overlooked. What the vision was. To what extent it is achieved, and don't forget some technical details. It'd be a fascinating read.

Until that book arrives, I'll keep reading. Well, I should get back to work. But after business hours, I'll keep reading.

McDonald’s Theory Of Bug Fix

I like Jon Bell's McDonald’s Theory and have put it to use from time to time. Last Monday was one such day.

My boss gave me a random bug. I debugged it and figured out what was wrong, but I was still unsure how to fix it. The code seemed to have some layering violations, but the right way to distribute the responsibility between the layers was unclear.

Looking at the commit history, the person who can fix this became apparent. I was wondering if I should just reassign the bugs to them, but that kind of action has had mixed results: People tend to push back, dodge or ignore. No one wants to waste their time on bug fixes.

Then, the idea of McDonald's Theory came to my mind: Instead of reassignment, I "fixed" it anyway, and sent the PR to that person. To my own credit, I didn't make a McChicken fix. I tried my best, and I'd consider it more like a McCrispy.

Yet, I know they will push it back. They indeed did. It was still a cheap McDonald's fix. And it worked as McDonald's: They thoroughly explained how wrong my "fix" was in the PR comment. So I appraised their analysis, pointed out they are much better positioned to fix it then asked to take it over.

As the theory goes, they agreed. And they gave me their version of the fix after a couple of days. It was better for sure: Instead of piling crap like mine, they removed the code in question. The layering violation seemed to be a leftover from some past refactoring, and the smelly code was not necessary after all. My faith in the theory has elevated.

I should acknowledge my luck that I hit the good engineer. The pattern I had seen was either 1) People just took the crap or 2) People pushed back but did nothing. Neither happened. They did what was supposed to be done, and I appreciate this healthy ending. People shouldn't eat McDonald's every day, and they need the ability to cook a good meal.

Morning Spinach: February

2023-02-15

2023-02-17

  • きのうは寝坊してできなかったが、Podcast 準備です。

2023-02-18

  • 飛行機の搭乗に間に合わない、という悪夢で目が覚め疲労困憊。05:15.
  • Podcast 準備つづき。

2023-02-20

  • ハイクの疲労で起きたら五時。
  • 引き続き podcast 準備。
  • 終了。しかし収録は来週。
  • 次なにやろうかなー・・・という前に、税金をやらねばならぬ・・・。
  • 税金。終わらすぞと思うも自社株向け証券会社のやつが来ていない。しかも来月中旬まで来ないらしい。相変わらず suck である。こいつの入力が一番大変なのに・・・。大変な理由は売れる分をこまめに全部売る設定にしているからで、これをやめえばラクになるし過去十年はこれをやめた方が圧倒的に儲かったが、もうそういう時代は終わりました・・・というか自社株保持とか怖くてできません。やれやれ。まあいいです。3/14 までは no actionable items なのでなんか他のことに時間使います。

2023-02-21

  • 04:35
  • 考え事でもするか・・・と思ったが、その前に溜まっっている Todoist で消化できるものがないか見るべし。

2023-02-22

  • 04:22
  • 引き続き考え事

2023-02-23

  • 04:38. 財布をなくす悪夢

2023-02-24

  • 雨ですねえ。
  • Accepting The Funny Mediocrity – Spinach Forest
  • やりたいことを書き出してみたが、まず子の Kindergarden のサイトを crawl して写真を集めるのが最初だな、と思い至った。なぜならサ終に伴いあと一ヶ月くらいでサイトが閉鎖してしまうからです。ひどい。
  • Python (Playwright) でやるか JS (Puppeteer) でやるか。Python の方が慣れてるが、Puppeteer の方が headless としては出来が良さそうなので悩ましい。良い機会だから JS/TS に入門しとくかなー。

2023-02-25

$ npm install --save-dev @types/puppeteer
npm WARN deprecated @types/puppeteer@7.0.4: This is a stub types definition. puppeteer provides its own type definitions, so you do not need this installed

  • 世の中は進歩しているぞ!
  • では Shutterfly のサイトにログインしてみましょう。
  • この XPath 叩ける $x ってなに?どこから来てるの?とおもったら "Console utility function" なのか。べんりじゃん・・・。
  • こういう便利機能もさー、たくさん devrel 雇ってるからこそ生まれるんだよわかってるかい社長さん・・・とか不景気なことを考え出すと幸福感が薄れるのでやめるべし。
  • 時間切れ。

2023-02-26

  • 04:30
  • つづき。
  • TypeScript なしに async/await なコードを書ける気がしない。Vanilla JS ヤベーな。がんばって TS にしておいてよかった・・・。
  • サイトの出来が悪いのか page load 終了を安定して検出できないためしょーもない workaround を沢山いれて乗り切るが、本質的にそういう仕事です・・・。
  • なにかとよくわからないページ遷移が発生するせいで Puppeteer の JS が死ぬので、かなり checkpointing を真面目にやって途中で死んでも継続できるようがんばらないといけない。時間切れ。
  • 昼。妻子外出中につき継続。
  • Hover すると表示されるメニューをクリックするとどこからともなく (Content-Disposition で) ダウンロードが開始されるというクソ仕様なのでどうすんだこれ・・・とおもったら Page.hover() method があるじゃん!Puppeteer すごい!
  • ダウンロードとかどう処理されるのだろうか・・・とおもったが headless ブラウザなので普通にダウンロードされるらしい。ダウンロード先どこやねん、というと、裏口API を使う。なるほど・・・。
  • 動いた!すごいぞ Puppeteer!
  • Node.js 16: setTimeout with async/await | LinkedIn
  • 古い方法で書いてしまったので後で書き直そう。

2023-02-27

  • 04:25. つづきやんぞ。
  • 更にいくつかの setTimeout() と retry を追加したところ、動き出した。
  • とおもいきやまたコケる。そのたびに適当なワークアラウンドを足す、の繰り返しである。この retry は higher order function で書き直したいが、それよりはさっさと片付けたい気持ちが先立ってしまうな。
  • しかし一日あたり 100-200+MB くらいのデータが 200 日分ある。Google Photos にアップロードしようかと思ってたけど、ちょっとでかい。そういえばむかし secon.dev で JPEG を WEBP に圧縮する話をみたな。全部おわったら真似してみよう。
  • PC の auto suspend を一旦 off にしておく。そして待ってる間やることもないので Google Photos の API でも調べるか・・・。
  • Library API overview  |  Google Photos APIs  |  Google Developers
  • Shutterfly scraping の 10x くらいめんどくさそうだな。CLI のツールとかないだろうか・・・。と調べるとあるにはあるが、あまり手堅い様子ではないなあ。
  • gphotosuploader/gphotos-uploader-cli: Command line tool to mass upload media folders to your google photos account(s) (Mac OS / Linux) これはどうかな?アップロードの仕方がドキュメントされてない・・・が、 API をたたくかったるさを考えるとこれを使うのが良さそうである。機能リストをよむと色々実装しなければいけないことがわかって尚更。そして上の secon.dev の記事もよく見ると同じツールを使っていた。
  • それにしても最近のプリスクールはアプリベースのサービスを使ってるところが多いけど、それで Web UI がない日には scraping とかできなそうじゃない?どうするんだろうね。というかどうもしないのだろうけれども。
  • なお学校の写真というのは別にポーズ取らせたりせず遊んだり作業したりしてるのを邪魔しないように遠くから撮ってるだけなので、そんなには面白くない。しかもつい最近まではマスク着用のため尚更である。あと割と無理にズームでよっている。電話機は Pixel 6a を使ってくれておりありがたいけれど、Pixel 7 Pro を進呈したい気になる。これは absurd でありながら過去に何度か真面目に考えたけど、もう電話機部門勤務ではなくなってしまったので、さすがにナシだな。
  • 時間切れ。ダウンロードの進捗は 1/3 くらい。途中でコケ無い限り、今日中にはおわることでしょう。
  • 勤務開始直前。終わってる。そして 50GB くらいあるなどうするべこれ・・・。圧縮して半分になってもちょっと Google Photos には置きたくないサイズである。気分的には 10GB くらいが budget なので、downsample して 1/5 くらいになってもらうかなあ・・・。Shutterfly がサ終したくなるのも無理はない。

2023-02-28

  • 04:45. ねすごし...
  • とりあえずダウンロードした写真は zip にでもして作業ディレクトリ外に避難しましょう。本来なら GCS にでも避難したいところだが、でかすぎて時間かりそうなのでまた別の機会。
  • xargs で時間を溶かし、Python に避難。シェル力が低すぎる・・・てか最初から Python で書いていれば並列化とかもできただろうに・・・むしろ TS で書くべきだったか・・・。
  • はーやんなっちゃうぜ時間切れ。
  • しかし冷静に考えて Google Photos に 200 個以上もアルバム作っちゃうのだろうか自分。狂気なのでは。
  • Delete all photos from an album from Google Photos : googlephotos そうだよねアルバム消しても写真消せないよね。やはり preschool 写真を共有目的で Photos にアップロードするのは危険すぎるな。Drive 使うほうが良いかなあ。一個くらいやってみるべきか。
  • prasmussen/gdrive: Google Drive CLI Client こういうのを使うらしい。Google Drive は directory based な permission がないせいでほんとこういうの nervous でやだな・・・。
  • ていうか皆様 iPhone で Mac なのだから Google Photos を経由しない時点で WEPB 使えないじゃん。終了。HEIF ... と一瞬思ったが今度は自分が見れんわ。これが first world social divide というものです。
  • 覚悟を決めて 50GB をアップロードするしかない。まあ一時的なものなのでいいです・・・。
  • 明日は podcast の公開作業をしなければなりません。