Spinach November

2024-11-01

  • Hello Vertex AI をした結果、さすがになんかライブラリ使いたいな・・・という気分になったので、重い腰をあげ入門してみたい。俺もエーアイエンジニアになるぜ!
  • おっさんなのでなんか本読みたいな・・・と思ったが、Amazon を眺めた結果ろくなのがなさそうという結論になったので、おとなしくオフィシャルドキュメントを読んでいきます。
  • でどのライブラリがいいかだが・・・。LangChain クソデカすぎて面倒そうだなーという気分がある一方、有象無象をさわってもすぐ消えていきそうだな・・・という気分もあり、やれやれ。
  • LangChain 以外だと LlamaIndex, Haystack, DSPy などが知られているらしい。まあ一通り眺めてみるか。飽きそうだが・・・。なんか Kubernetes 登場直後に色々な Microservices framework が登場したのを彷彿とされてにぎやかだねー。あるいはゼロ年代のウェブフレームワーク全盛時代でもいいけれど。(ところで Microservices framework は結局なにか決着を見たのだろうか?)
  • とりあえず防備録兼書き捨てコード置き場として private github repo / project を設置するものなり。
  • さて読んでくぞ。LangChain うわーめっちゃ商業的な匂いが・・
  • Getting started: Tutorials | 🦜️🔗 LangChain -> Build a Simple LLM Application with LCEL | 🦜️🔗 LangChain
  • 読むだけにしようと思っていたが、さすがに手を動かさないとダメげ。そして今日は時間切れです。また明日。

2024-11-02

  • はー早速寝坊。というか目覚ましがついてねー(つけた)。
  • Build a Simple LLM Application with LCEL | 🦜️🔗 LangChain
  • なんかダサいな・・・。しかし評価は保留してめます。クラウドインテグレーションはパス。
  • Build a Chatbot | 🦜️🔗 LangChain
  • おい!ダサすぎだろうさすがに!langgraph とか langchain と独立している上に LCEL とかフカしてパイプをオーバーロードしてたのをすっかり投げ出してダサいグラフ定義 API を再発明!おまえら素人か!!
  • というか素人なんだろうな Python 的には・・・これはつれーわ・・・若者の考えた最強の中二病 API につきあわされる苦行・・・。でも Emotional Intelligence の修行だと思ってがんばるよ Artificial Intelligence の修行のはずだったけど・・・エーアイエンジニア、EQ を求められる。
  • 時間切れ。明日は RAG なのでちょっと楽しみ。

日常

2024-11-03

  • 肌寒さにダラダラしていたら寝坊。しかし夏時間が終わる日なのでまだ時間があります。
  • そういえば最近 CityNerd という YTer が面白くつい見てしまい時間を溶かしており、課外活動の時間を奪っている。とりあえずスマホの YT app を disable しておく。課外活動をするには他のダラダラを全部殺さないと時間ないのだよね。やれやれ。
  • LangChain やってくぞ!
  • ところで LangChain は LangSmith というクラウドを推してくるのだが、これがないとデバッグとかできないらしい。localhost の observability すら提供せずクラウド押し売りとはだいぶがめついな・・・。
  • Vector stores and retrievers | 🦜️🔗 LangChain
  • おー RAG された!面白いじゃん!そして LangChain は パラメタのキーワードを渡すという形でリニア以外の chain (join 的なの) を実現できるのだね。
  • それにしても RAG が存在する世界で lang graph の state とか別になってるのはどうなん?というかクソダサじゃん?どちらも context なのに、あんなに API が違うとかガチでセンスがないように感じてしまうのがエーアイ脳が足りてないのだろうか。
  • Build an Agent | 🦜️🔗 LangChain
    エージェント!
  • しかし create_react_agent とかいう超絶ブラックボックス関数を呼び出してげんなり。そういうのエンドユーザが作らないと API の意味ねーだろ・・・
  • それにしても tool calling っていまどき Gemini すら対応してるのだねー。
  • まあいいです。Agent はスキップ。
    • 残りのチュートリアルはとりあえず読むだけにすっかな。
      Build a Retrieval Augmented Generation (RAG) App | 🦜️🔗 LangChain
    • 発見: Hub という prompt repository がある。人気順で眺めるとちょっとおもしろい。俺もプロンプトエンジニアになるぜ!
    • それにしてもクローラーみたいのまでAPIになってるLangChain, さすがに何でも抱えすぎ。
    • つぎ Conversational RAG | 🦜️🔗 LangChain
    • create_stuff_documents_chain! まーた謎の blackbox 登場ですよ...
    • そして create_history_aware_retriever! LangGraph つかってねー。あのチュートリアルなんだったん?公式ドキュメントの一貫性のなさは API のダサさと整合しているな。(と思ったら最後の方にでてきた。いらなくないですか・・・)
    • ただ history を一旦 LLM で整形してから QA の prompt に渡すという二段構成にする工夫とかには学ぶところがある。
    • ところでサンプル内で retrieve されている Lilian ちゃんのブログは最近でも更新されており偉い。読まないとな。
    • つぎ Build a Query Analysis System | 🦜️🔗 LangChain
    • いきなり YouTube のクロールをはじめます。おまえら transcript までぶっこぬいてるがそれ TOC 大丈夫か。コードをみるとサードパーティのスクレイピングライブラリに依存しているが・・・。
    • まあいいです。
    • Structured Output というのをつかっているけど、なんなのかなと思ったら、function calling をハックして答えを構造化データ(関数呼び出し)にするらしい。モデルによっては JSON を出せるが Gemini はまだだめ。なるほど。
    • というわけで、このチュートリアルは LLM に検索クエリを作らせ、それを RAG するという話だった。面白いね。
    • つぎ Build a Question/Answering system over SQL data | 🦜️🔗 LangChain
    • "create_sql_query_chain" をつかいます。はいそうですかお疲れさま〜。
    • いちおうコードをみてみると・・・。色々な汚れ仕事をしてくれてはいる。そしてデータベースごとに使うプロンプトが違う。大変。
    • つぎ Build a Local RAG Application | 🦜️🔗 LangChain
    • Ollama つかえるよ、という話。あとは他と一緒。
    • つぎ Build a Question Answering application over a Graph Database | 🦜️🔗 LangChain
    • SQL だけじゃなくて Neo4J もいけるよ、そう GraphCypherQAChain を使えばね!という話。がんばってください。
    • つぎ Build a PDF ingestion and Question/Answering system | 🦜️🔗 LangChain
    • PDF を読むサンプル。コードをみると pypdf を使っている。
    • この手のインテグレーションの類、どう考えても玉石混交になるわけで、LangChain もそれらは langchain_community という責任保留感を漂わせるモジュールに押し出して入るが、オフィシャルチュートリアルから参照してんなら責任保留できませんからね?
    • つぎ Build an Extraction Chain | 🦜️🔗 LangChain
      Structured output の使い方。データ構造がフラットだけじゃなくてネストしてるけどGemini 大丈夫なのかな?チュートリアルみるとだめそうだけど API reference 的にはネストしていいことになっている。まあいいも悪いもモデルの賢さ次第なわけだが。つまり Claude を使えということか・・・
    • つぎ data_generation | 🦜️🔗 LangChain
      Few shot learning と structured output を組み合わせてそれっぽいテストデータを作れるぜ、みたいな話。面白いね。Unit test の fixture とかこういうので作ると楽しそうじゃん。FewShotPromptTemplate というのがある。
    • つぎ Tagging | 🦜️🔗 LangChain
      Classification やらせたとき出力に structured out 使うといいよという話。なるほど。
    • つぎ Summarize Text | 🦜️🔗 LangChain
    • create_stuff_documents_chain というのがあるよという話。コードをみるとこんくらいプログラマに書かせろや・・・という内容。秘蔵の prompt があるわけでもないし。
    • Evaluate your LLM application | 🦜️🛠️ LangSmith ... は面白そうだけどクラウドの機能なので省略。
    • といったところでビギナーチュートリアルページは全部眺めたぞ!
    • Cookbook というのがリンクされているので何かと思ったら ipynb のコレクションだった。むしろ最初から全部 ipynb で書いてそれをマシなフォーマットで整形してサイトにすればいいと思うのだが、ほんとに雑だな。面白そうではあるけれどあまりに玉石の石よりっぽいので省略。
    • つぎ How-to guides を眺めていきたいきがするが、多いな。先に Conceptual guide かな。
    • Why langchain? | 🦜️🔗 LangChain
      気持ちはわかりますがねー。
    • Architecture | 🦜️🔗 LangChain
      LangServe...イラネー。いや試作にはいいかもしんないですけどね・・・
    • といったところで日曜日の朝はおしまい。

2024-11-04

  • 早起きしたぞ!
  • Conceptual guide | 🦜️🔗 LangChain いっぱいある。
  • Runnable
    これが chain を実現するための統合インターフェイスなのだね。チュートリアルでも強調してくれたらいいのに。
  • Tools
    もうちょっとなんとかならんかったんかな型まわり・・・ Runnable はあんなにメタデータゴテゴテなのに tool のアドホックさといったら。
  • [2309.02427] Cognitive Architectures for Language Agents
    引用されていた。読んでいいかもしれぬ。
  • Memory
    この LangGraph の stateful なデザインは未だに納得がいかないが、わざわざ 別のライブラリに切り離してあるのはマシというか、使わなければいいのだろうね。"agentic" なループ構造は、まだフレームワークが抱え込めるほど成熟してないんじゃないか。単にダサいだけかもしれないが・・・。
  • LangChain Expression Language (LCEL) | 🦜️🔗 LangChain
    "Language" とか "Orchestration" とか大げさな言葉を使いたがりますネェ。まあいんだけど、
  • TIL: __ror__
    Dict から始まるパイプラインどうやって実装されているのかと思ったら、こんな magic method があるとは。やるじゃないか Python...
  • Document loaders | 🦜️🔗 LangChain
    こいつはまじで pure garbage じゃないですか。なんでデータソースからのロードとデータのパースが混じってんの?組み合わせたりしたくないのかい?クラウドから読んだファイルはぜんぶ Unstructured という何でも何でも頑張ってパースするライブラリに突っ込んでいるが、そんなら PdfLoader とかいらないじゃん?アホなの?ついでにそのライブラリが PDF 読むのに使ってる Poppler は MIT でも LGPL でもなく GPL だから刺されないよう気をつけてな!エーアイは著作権を守らなくていい世界線なのかもしれないが。
  • [2310.06117] Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models
    リンクされていた。DeepMind こんな prompt engineering paper も書いてるのだね。そのうち読むか。
  • [2212.10496] Precise Zero-Shot Dense Retrieval without Relevance Labels
    これも同系統の paper らしい。
  • Retrieval | 🦜️🔗 LangChain
    色々な query rewriting のテクニックが紹介されていて面白い。それらは幸いライブラリにはなっておらず langchain-ai/rag-from-scratch というチュートリアルでカバーしているらしい。へえ。
  • Retrieval augmented generation (rag) | 🦜️🔗 LangChain
    このブログを読め、と書いてあった。あとで: A Practitioners Guide to Retrieval Augmented Generation (RAG)
  • Agents | 🦜️🔗 LangChain
    LangGraph を使えと書いてあるだけ。いやです。LangChain はなんだかんだでそこそこ見どころあると思うけど langgraph はヤバさしか感じない。なんでだろうね。制御構造を再発明している割にダサショボすぎ+対価として得られるものナシ+クラウド押し売りのが良くないのだろうか。おまえらのインスパイア元の Pregel / Beam とかは boilerplate は分厚いがもうちょっと見返りあるんですよ。
  • Prompt Templates | 🦜️🔗 LangChain
    はい。
  • Output parsers | 🦜️🔗 LangChain
    RetryWithErrorOutputParser というのがリンクされており、気持ちはわかるが unidirecdtional data flow の世界でどうやって実装できるん?というと、単に前もって手前の chain を渡しておきます。はい。
  • Few-shot prompting | 🦜️🔗 LangChain
    えーなんもライブラリの支援ないの・・・と思ったが、それは HOWTO を見ろということらしい。はい。
  • Async programming with langchain | 🦜️🔗 LangChain
    AsyncIO に対応してるのは偉い。がんばった。
  • Callbacks | 🦜️🔗 LangChain
    デバッグ・モニタリング用にコールバックがありますよと。なんで 20 世紀ジャバみたいな巨大インターフェイスを作ってしまったのか若者よ・・・と思ってしまうが、まあいいです。
  • Tracing | 🦜️🔗 LangChain
    これをクラウドにロックインしてしまったのだねー欲深いですねー。VC-backed library はこういうのがダメだなほんと。
  • Evaluation | 🦜️🔗 LangChain
    これもクラウドのお客様限定。Eval の支援がない LLM ライブラリとかどうなの?Vibe だけでいっちゃう?
  • といったところで Concepts 終了。Glossary は割愛。
  • How-to guides を読みたい気もするが、量が多いのと concepts との重複もそれなりにあるので、実際に使う段になったら on-demand で読むほうがいいでしょう (by design)。
  • さて LangChain の上辺はわかりました。こう、大喜びで使うかんじではないが素でクラウドの API を使うよりマシそう、ただし地雷・ゴミも多そう、といった雰囲気なので、他に良いのがないならベーシックな機能を納得できる範囲で使っていくのが良いのでしょう。
  • さて次は LlamaIndex を軽く冷やかします。これもめっちゃ VC money の臭いがしますねー。
  • LlamaIndex - LlamaIndex Introduction...を読む前に今日は時間切れ。
  • 以下日常。
  • The “New York Times” Site Could Be Shuttered on Election Day—Blame Bosses | The Nation
  • わーこれ NYT の non-tech な人々を全部敵にまわしてしまうのでは?
  • Ben Thompson, podcast を聞いていたら iPhone から Pixel に乗り換えようとしたのち速攻で挫折したと話しており、さもありなんと思う。本人が思っている以上に Apple 信者だからな・・・。ちなみにわたくしも iPhone にスイッチできる気はしないのだった。電話を使うのってスキルなんだよね、直接的には一銭にもならないので忘れがちだけれど、割と高度なスキル。リセットする気にならん。
  • [2410.10630] Thinking LLMs: General Instruction Following with Thought Generation へー o1 たいなかんじ?読んでみようかな。しかし今週は昼休みがなさそうである。"The emergence of recent commercial products like OpenAI-O1 (OpenAI) also support our motivation."
  • ちらっと見たら CoT が得意になるように finetune (RL) するという話で、まあまあ o1 ぽいのかな?Related work のセクションは最近の流行りをおさらいしてくれていてよかった。(というところまで読んだがまだビルドが終わんねー proguard-enabled build...)
  • Examples of modern code and best practices of Android applications. : r/androiddev
    率直で良いスレですねー。
  • スキを見て続き。
  • Starter Tutorial (Local Models) - LlamaIndex
    なんか全然チェインとかする感じじゃないのな。そして CUDA がどうこういうエラーが出ますねー・・・。
  • Frequently Asked Questions (FAQ) - LlamaIndex
    はいはい。
  • Llama Hub
    なんでパッケージマネージャ再発明してしまったん???迷惑ですよ???萎えるなーおい。しかしデータローダーの類はこれ経由で提供らしい。嫌すぎ。

2024-11-05

  • 寝坊。さむい。
  • Building a basic agent - LlamaIndex
    ReActAgent とか、なんか LangChain 以上に何もプログラミングの余地がないな・・・そんなブラックボックスじゃどうしようもなさそうだが。
  • A basic workflow - LlamaIndex
    型ベースでイベントディスパッチをしてくれます。・・・LLM関係なくね?
  • Introduction to workflows - LlamaIndex
    結局ぜんぶ LLM 関係なかった・・・。
  • Evaluating - LlamaIndex
    RAG がうまくいったかチェックする関数がありますよ。そうかい。
  • Observability - LlamaIndex
    いろんな tracing backend に対応してますよ。クラウドもあるよ。ロックインしてないのは立派。
  • A Guide to Building a Full-Stack Web App with LLamaIndex - LlamaIndex
    Flask と React でウェブアプリだよー。オレオレフロントエンドとか無いのは LangChain と違って良心的である。コードをみるとなぜかバックエンドを別プロセスに切り離しているが、なんか嬉しいのかね。将来的に別ノードにしてね、ということなのかもしれないけど。そして相変わらず LLM 関係ないねー。
  • Structured Data - LlamaIndex
    NLSQLTableQueryEngine えー・・・。
  • ”Learn” セクションは以上。
  • 他のセクションも軽く冷やかしたが、なんというか、なーんもないな。RAG のインデックスにデータをとりこむあたりは多少手厚いが、LLM でなんかする部分はプリセットの "engine" があるだけ。LangChain のゴミの山と比べてどっちがマシかといわれるとわかからないが・・・。ただ LangChain はすくなくとも LLM への応答をチェインする "orchestration" に面白みがあるので、遊びがいはある。LlhamaIndex は、VC money を燃やしてるとは思えないショボさである。おまえらクラウド以前にやることあんじゃないの。
  • LangChain にしても LlamaIndex にしても、サンプルコードがやたら充実してるのは立派。Jupyter は偉かった。
  • といったところで LlhamaIndex は終了です。
  • つぎは Haystack です。期待値低めでサラっと行きましょう。
  • Get Started
    わあ、LangChain から pipe operator override をなくしつつパイプラインの概念を残してしまったような残念 API だな・・・。なんでおまえらはパイプラインの抽象を我々に強いるんだい・・・。コードの上で手続き的にやることに対する利点を提供できてないじゃん?そういうの中二病っていうんですよ??(わかってる恐れはあるが。)
  • 一つには Python にロクな promise / future がないからかもな。fork-join とか promise のある世界はなんの労もないからね。
  • Haystack Concepts Overview
    LlhamaIndex よりは LangChain に近そうな雰囲気である。
  • Pipelines
    YAML かなにかに直列化できるらしい。しかしグラフをつくる API の boilerplate っぷりはどうしてしまったんだろうねというかんじ。
  • Visualizing Pipelines
    可視化できる。
  • Serializing Pipelines
    YAML. もはや Python 書くより YAML で書いたほうが簡潔で良くね?どうせ run するまで REPL 的につつくこともできないわけだし。
  • Creating Custom Components
    LanchChain の Runnable と比べると常識的なかんじ。
  • ドキュメント、ざっと眺めるも細々した話が続くのでなんか違うのないかなと見るとチュートリアルがあるね。明日はこれを眺めるべし。Tutorials & Walkthroughs | Haystack
  • 以下日常。
  • ちょー久しぶりに日本のランダムリクルータからメール。きみたちどうして LinkedIn 使わないん?
  • Picasso is formally deprecated : r/androiddev
    後継は Coil というらしい。
  • GitHub - Tencent/Tencent-Hunyuan-Large
    中国はデカい IT 企業があっていいなあ・・・。

2024-11-06

  • はー大統領選、接戦という前評判とは異なりあっという間に決着ついたな。我々テック外国人にとっては暗黒時代の到来(再来)ですが California Blue Bubble の中で慎ましく暮らしていこうと思います。
  • 八年前は other sides of the nation について理解しようと working class America についての本とか読んだりしたけれど、もうそういう意欲もナシ。2016 のショックがあったのにリベな人々は融和を目指すとかゼロで Trump の悪口言ってインターネットに責任押し付けてばっか。この戦いに備え我が身にはなーんもしてこなかったんだもんな。Dem/Biden がダメすぎたというのに尽きる。お前らは愛想を尽かされた。別の見方としてはインフレとイスラエルの戦争という悪運が続いたという面もあるかもしんないけど、前回 Trump が負けたのも半分くらいは COVID の影響なので、選挙ってのはそういうもんなんだよ。
  • まあ自分のコントロールできないことにくよくよしても仕方ない。ニュースとは距離を起きエーアイ遊びでもしながら気を紛らわしていくわ。

2024-11-07

  • 寝坊。昨夜は team dinner だったが何故か開始が午後八時。しかも開催場所が車で ~30 min という家族持ち不親切仕様。なぜならそこにファンシー寿司屋があるからです!しかし開催場所と時間を差し引いてもカウンターに横並びで寿司とか team building としてどうなんだ。なお寿司は best sushi ever でした。
  • ボスが「LLM つかった社内向けツールとかできない?」みたいな話をしていたので、そういえば会社で LangChain 使えるのかな、と眺めると当然使えず、かわりに OneTwo なるライブラリを作っていると知る。API は常識的っぽい雰囲気だが、RAG が無だな。おまえら社内ではゴツい search stack とかあるのかもしらんけど、サードーパーティにはどうしてほしいんだい?てか弱小社内ツールとか search stack 使えないんですけどどうしたらいいんでしょうか。
  • これを眺めていて気付いたが、Python には asyncio.wait があると知る。これあるならマジ workflow chaining dsl いらないじゃん?OneTwo も workflow はなくて、そこは評価できる。

2024-11-08

2024-11-11

2024-11-12

2024-11-13

  • Non-Coffee Morning です!
  • Georgia Mother Jailed for Letting 10-Year-Old Walk Alone to Town
    こういうの都市伝説かと思いきや現在進行形なのか。HN に過去報道を集めてる人がいた
  • Daily Livestreams for 5-Day Gen AI Intensive Course - YouTube
    Sign up していたが最近全然メールを読まないせいで忘れていたぜ・・・。
  • Promotions and tooling at Google (with Irina Stanescu, Ex-Google)
    くだらねー。Pragmatic Engineer は色々ダメだな。unsub すっか・・・。
  • How I ship projects at big tech companies | sean goedecke
    "You only know you’ve shipped when your company’s leadership acknowledge you’ve shipped." まさか東洋経済トークだとは意表を突かれたぜ・・・。
  • The Beginner's Guide to Visual Prompt Injections: Invisibility Cloaks, Cannibalistic Adverts, and Robot Women | Lakera – Protecting AI teams that disrupt the world.
    ウケル
  • Farewell and thank you for the continued partnership, Francois Chollet! - Google Developers Blog
    あれだけ問題発言しまくって今日までこれたのは、ほんと実力というほかないよな。
  • さて DPSy の optimizer に戻ると・・・論文は煮えきらないのでコードを見ることにします。主要な関心としては、Optimizer はそもそも候補をどこから持ってくるのか、ということです。few shots の組み合わせを列挙したり、ユーザの与えた入力に対して LLM から出力を得て、合っていたらそれを水増し / bootstrap の材料に使うというところまではわかった。が、そういう few shots の最適化だけなの?なんかプロンプト自身は生成してくれないの?
  • と眺めていくと Proposer というのがありますねー。どうも入力のサンプルや "signature", というか optimize したい DPSy の構造を色々アノテートして LLM に与え、使うプロンプトを生成させるらしい。ついでに LLM に渡すための構造を自然言語で記述するのも LLM にやらせている。ついでに生成には tips というパラメータがあり、それで挙動を制御できる。これは・・・面白いじゃん?
  • 要するに DPSy は DPSy プログラムというユーザの入力から、そのプログラムを駆動するためのプロンプトを探索で見つけ出してくれるわけだ。なので DSPy のユーザはプロンプト以外の部分、どうやって LLM の行動をチェインするかみたいなやつ、にフォーカスすればよい。
  • これが実際にうまくいくのかは試さないとわからないが "Programming—not prompting—Foundation Models" という掛け声は嘘ではないね。面白い。LLM にプロンプトを考えさせるのは世の中ではよくやられているっぽいが、それをパイプラインに組み込み、かつ最適化をするというのが新しいのかな?
  • こんど漢字例文ジェネレータを書き直してみ・・・ても仕方ないなもう十分に動いているので・・・。もうちょっと入り組んだことをさせたい。
  • ただ RAG のインテグレーションは皆無なので、そういうのがしたい人は LangChain のほうが良いね。DPSy は LiteLLM という API アダプタを使って各種 LLM に対応しているけど、そういうかんじで RAG 側に特化したアダプタのライブラリがでてくると DPSy はそれを使えば良くなるので、一年くらいしたらもうちょっと使えるものになってるのかもしれないね。
  • ところで先の DPSy 論文では「few shot のチューニングでだいたいは十分」と書いており、プロンプト生成のような高度な最適化はニッチみたいな雰囲気を漂わせているが・・・。どうなのだろうね?Gemni ならユーザが用意した few+ shots は楽勝で context につっこめるので、いい組み合わせを選ぶみたいのはムダな気がするけれど。それともユーザが正解を用意しなくても LLM に生成させた demonstration があれば足しになるということなのかな?
  • まあいいです。LLM フレームワークさがしはこれにてだいたい終了。DPSy は hello world くらいはしてみるとして、総体としては LangChain を使ってあげるのが無難そうという結論。
  • 仕事。
  • GROUP BY CUBE とか誰が使うのかと思っていたが、今まさにほしいが仕事のデータベースではサポートしておらず手で式を展開していて、なるほどね君はマテリアライズ要員だったのか・・・となる。
  • SQL, Pipeline Syntax になると relational algebra との距離が近くなり、結果として relational algebra を shuffle した optimized plan が読みやすくなり、プロファイラと仲良くできる度がちょっと上がる、気がする。

2024-11-14

  • 風邪。子より来る。

2024-11-16

  • HN のデータを LLM に食わせたい(←クリエイティビティがない人)と思い、BigQuery の HN ダンプをつつく。いやー投稿たくさんありすぎだろう・・・(350k / year). なお投稿数自体は 2011 年あたりで頭打ちになり、そのあとは 250k-350k のあたりをうろうろしている。一方で上位ポストの score はインフレを続けており、最近は 99 ptile で 200-300, 99.9 ptile で 900 くらい. でも 300K だとすると p99 って年間 3000 件 (一日十件弱)、p99.9 って年間 300 件 (一日一件弱) じゃん?バー高いなー。でもそのくらいあるなたしかに。
  • BQ 上でいじったデータ、どうやってテーブルに保存したり PQ にエクスポートしたりすればいいのかなー API 呼ぶのかったりーなー・・・と思っていたら、どちらも SQL からできるようなっていた!(CREATE TABLE, EXPORT DATA.) めでたし。

2024-11-17

  • Pre-Hacker News 時代のデータってどこかにないのかなとおもったが・・・たとえば del.icio.us はどうかというと: "Do you have my data? Maybe. When Yahoo sold del.icio.us to AVOS in 2010, there was a stipulation that users had to opt-in to have their data transferred. So if you have a really old (pre-2010) del.icio.us account, and you did not consent to this transfer at the time, then I do not have your data. It is sitting in a KGB datacenter somewhere, or wherever Yahoo! databases ended up." 絶対だれもやってねーだろそんなの・・・どのみちダンプはナシ。
  • Internet Archive をみてみると、微かにトップページがあるくらいですねー・・・。
  • Reddit は 2005 創業らしい (vs del.icio.us 2003)。彼らのサーバにはなんかあるはず、と言える。
  • Complete Public Reddit Comments Corpus : Free Download, Borrow, and Streaming : Internet Archive おお! しかし 2007 からか・・・なぜ初期のデータをさぼった・・・。しかも "Approximately 350,000 comments out of ~1.65 billion were unavailable due to Reddit API issues." ということなので sliver of iceberg である。
  • Subreddit comments/submissions 2005-06 to 2023-12 - Technical - Academic Torrents こっちはもっと完全なのでは?と Torrent client をインストールして探すとたしかに存在するが、ファイル数が多すぎてクライアントの list view でほしいファイルに到達できん。というか "/r/programming" を見ればいいと思っていたが、それでいいのかもわからないしなあ。保留。
  • Download subreddit or user data これを使うとダウンロードできるらしい。そして /r/programming の投稿は全部で 620k? 規模感としては HN と似たようなもんか。いいじゃん。
    ArthurHeitmann/arctic_shift: Making Reddit data accessible to researchers, moderators and everyone else. Interact with the data through large dumps, an API or web interface. ソースのデータを用意していること人、偉いな・・・。NPO なら募金したいところだが、個人らしい。
  • さて本題の HN のデータいじりにもどります。
  • 朝活動終了。
  • Computer use (beta) - Anthropic
    Computer Use ってなんなのかな、と調べると、API は tool use の延長として実現されている。つまりモデルが「画面をよこせ」「マウス動かせ」とかいうのに応じて結果を返すと作業が進むという世界。他のツールは関数名やスキーマからなんとなく呼び出してくるが、この computer use はそれ用に finetune してありますよ、ということらしい。むかーし WebGPT というのがあったけど、あれが multimodal になるなど超絶進化して帰ってきた感じか。
  • 一歩さがり、LLM で agentic とか言ってるのは何なのだろう。Claude の computer use は agentic といっていい雰囲気がある。一方 LangChain とか見てると tool use をすれば "agentic" という雰囲気だが、それはいまいちしょぼすぎるように感じる。つまり:自分は agentic がなんなのかわかってない。
  • Four AI Agent Strategies That Improve GPT-4 and GPT-3.5 Performance
    これによると、Reflection, Tool Use, Planning, Multi-agent collaboration が "agentic patterns" で、こういうのを使うといいよとしている。つまり agentic というのを新しいパラダイムではなく LLM programming のテクニックと位置づけている。まあ、それならわかるかな。しかし細部はまったく不明なので、リンクされてる論文読まないといかんですねえ。
  • さて r/programming の JSONL が読み終わったので冷やかすか・・・と duckdb に読ませてみると、一瞬!すげー! 1.3GB くらいあるので parquet にしようかな、とかおもったが全く不要。ぶっちゃけ HN のデータもたしか全部で 10GB くらいなので export して duck に食わせるのもアリだなとは思いつつ、export がだるい。
  • 2006 年代までデータがあるので HN よりちょっとだけカバー範囲が広い。しかし URL は軒並み死んでいそうだなあ。
    • なお 2006 年のトップ記事はこれ。真の出典は 1985 年で、それが 2006 年の Reddit に話題になり、しかしその URL は消えており、リンク先の人がそれを発掘している。消えてしまった話題の記事を Web Archive から発掘・整形してあげる作業をすると人類のためになりそうである。

2024-11-18

  • さて寄り道はこのくらいにして作業しないとな。といってもあと 30 分しかないが・・・。
  • しかしそんな自分にも今日から頼もしい味方がいるのです。すなわち GitHub Copilotだ! (Cursor は高すぎて断念だ!) わー頼むとコード書いてくれて便利だねー。
  • 仕事。
  • だが、課外活動楽しすぎのため仕事やる気でないなー。早くおうち帰って続きやりたい(おうち帰っても続きできないけどね親業務あるので。)まあ切り替えて仕事すべし。
  • そういえば仕事の Web IDE もコード生成できたな・・・とおもって試したら Copilot と似たような UI である。わー便利ー !SQL に限るけどー。
  • prompt-based codegen を使いこなすという楽しみが加わった結果、SQL を書くのが俄然楽しくなってきた。Pipeline syntax も好きだけど、あれは楽しいというよりは苦痛を減らすという感じなので。
  • 一方 Android Studio 社内版はインテグレーションが遅れており盛り上がんねー。しばらく Kotlin は休憩。
  • Windsurf Editor by Codeium Cursor の競合。後発なので $10/m か。これ試したい気もするが、Cursor にしても VS Code をフォークされてしまうとなー。
  • ちょっと長めの SQL を少しずつ積み上げながら書いていく、という今やっている作業のストレスはどこからくるのかと考えるに、Perfetto UI 付属のしょぼいエディタ (<textarea>) で書いているからだと思い至る。なんとかしてこれを colab に持っていけば楽になるのだが、めんどくさいんだよなーランタイム起動して同じクエリを corpus から見つけ出してーみたいのが・・・。しかしそれは自分には必要なワークフローなのではないか。明日やる。
  • 夜。
  • ループを回しながら Gemini をバーっと呼んだのでさて課金大丈夫かな・・・と思ったら $20 と言うので焦ったが、少し前に起動した Colab Enterprise が GCE に SSD のストレージをつくり、そのままだったらしい。無駄遣いしてしまったぜ・・・。
  • しかし会社では雑に colab runtime を上げっぱなしにして勝手に消えるにまかせているが、無駄遣いしてんな・・・。でもディスクはそんなにガメてないと思うのだよねー。

2024-11-19

  • LLM にインターネット古典記事のレビューを書かせて見る試み。2008 HN にランクインしている Stevey's Blog Rants: The Universal Design Pattern を書かせてみると...
  • Gemini 1.5 Pro: Steve Yegge's "Universal Design Pattern" is a humorous yet insightful blog post from 2008 that satirizes the overuse and often misguided application of design patterns in software engineering. He proposes a single, all-encompassing pattern to solve all problems, highlighting the absurdity of blindly following patterns without considering the specific context. It's a classic read for anyone who's ever felt bogged down by overly complex design solutions.
  • vs. Claude Sonnet: Steve Yegge's influential 2008 blog post explores what he calls the "Universal Design Pattern" - a powerful approach to software design centered around the concept of Properties. This lengthy but insightful piece argues that most design patterns and programming paradigms ultimately boil down to managing properties and their relationships. The article gained significant attention in programming circles for its ambitious attempt to unify different design approaches under a single conceptual framework, though some found its claims too reductionist.
  • というわけで Gemini 氏 hallucinate しすぎだろう vs Sonnet は完璧。なおタイトルとURLだけ渡して書かせているので多少の hallucination は想定内。ただ Claude は 6s くらいかかっていいるのでインターネットアクセスをしている気もする。 おとなしくコンテンツを自分でフェッチすればいいのかもしれない。(値段が 10x なので。)
  • Does Claude have access to the internet? | Anthropic Help Center
    "No. Claude is designed to be self-contained, and will respond without searching the internet." マジ!? すげー記憶力!! 値段が 10x でも納得。そして Gemini Pro もテキストを自分でフェッチして渡したら結局 10x 的な課金になってしまう恐れがあるなあ。
  • GP4o 少しは安いのかなーと眺めると ... Pricing | OpenAI ... 大差なかった。安いのは Gemini Pro だけ。そして安いにはそれなりにわけがありますな・・・。
  • でも Sonnet で遊んでたら一瞬で散財してしまうので、使いどころを見極めるべくもうちょっと真面目に vibe check する必要がありそうである。
  • https://news.ycombinator.com/item?id=42135303viLLM API Pricing を見ると Sonnet vs GPro 10x は嘘で 3x くらいだな。使い分けとしては Pro (Task によっては可能) / Sonnet (高価高品質) + Flash (激安) というかんじだろうか。というか Vertex AI 経由で使うとプレミアで高い?
  • まあいいです。仕事。

2024-11-20

  • 朝コーヒー(decaf)です。ただ昨日の夜が遅かったので開始も遅め。
  • FireDucks via FireDucks: Pandas but Faster | Hacker News
    BSD といいつつコードが見当たらない。誰が作ってるのかなーと思ったら NEC の研究所らしい。へー!しかし論文はないのだった。コードもないし、残念。
  • 数年前 Google Photos 無料プラン終了にあわせ試してみた Smugmug, 結局素人には Google Photos が楽だと使うのをやめていたが、移行が面倒で年会費を払っていた。が、重い腰を上げ本日無事に移行終了!めでたい!
  • なお自分が使っていた basic plan というのはなくなって、その上の "power plan"... というのもなくなって、最低ラインは $35/m らしい。貴重な godfathered cheap plan を失うのは惜しい気もしかけるが、そもそも使わないから惜しいも何もない。
  • メールの返信などを済ましたところで今日の活動は終了。
  • Foursquare Open Source Places: A new foundational dataset for the geospatial community
    DuckDB 使えるな・・・と思ったら使っていた。べんりー。
    Nice. Works with clickhouse local cli too. ./clickhouse local -q "select count(\... | Hacker News
    Clickhouse も同じことができるらしい。へー。
  • The Untold Story of SQLite With Richard Hipp - CoRecursive Podcast
    このインタビューで Richard Hipp 氏が Google とサポート契約していることがわかるが、こないだ Perfetto に報告したバグが SQLite サポートに回されささっと直してもらうのを目撃した。SQLite は SQL がしょぼくてそんなに好きじゃないけど、ちゃんとすぐ直してくれるのは偉いし、他を差し置いて使う気持ちもわかるわ。しかしこんな勢いで世界中からバグ報告来てたら忙しそうね。
  • 仕事。
  • うっかり勢いでめんどくさい doc writing に signup してしまったが、これ書かないのも混乱を招くしわかってない人間に書かれるのも混乱を招くし、本来なら自分より上のレベルの人間がやるべき仕事だと思うが、そういうのできる人いなそー、という直感により引き取ってしまった。上層部への信頼が足りてない・・・。
  • TIL: <a href="data://..." download="filename">

  • Next-Gen Models Show Limited Gains
    面白くなってきました・・・・。もう GPU/TPU 買っても良くならないので給料を高くすると良いのではないですか?だめですか?

  • さて Hacker News いじり、あっという間にデータとコードが mess になって先に進むのに気が引けてきた。デとタリテラシーが低すぎる。なんか本ないかな・・・と Sonnet に聞いたら Designing Machine Learning Systems というのを勧められたので買ってみた。真面目に読む気はないが、適当につまみ食いして付け焼き刃する所存。

2024-11-21

  • Designing Machine Learning Systems をひやかす準備で NotebookLM podcast にしてみたが・・・。妙に会話の質が低いな。書籍だと長過ぎる、という問題はあるかもしれないが、すべてのコンマで相槌入っててヘン。バグだろうか?
  • 実際に目でも読んでいるが、ML Systems と LLM アプリはだいぶ違うな。なにしろ training とかないからね。Eval は LLM app でも必要だが、定量的な評価は割と難しい場合もある、気がする vs ML は score を上げてくのがメイン(上がるかどうかは別として、というか腕次第として)。
  • 仕事。
  • 会社の社内サーベイ、形骸化が著しい。昔はもうちょっと機能してたというか、アクションがとられているかはともかく情報としては意味を感じていたけれど、もはやほんとにどうでもいい。

2024-11-22

  • Claude Pro に契約してみたのはいいが、なんか随分計算資源由来の制限が多いね。大丈夫なのかこの運用。
  • COVID+Flu shot
  • 来週から休暇なのだが、直前に大変なウンコが投げつけられているのに気づく。トイレ掃除人がズカズカ家にやってきて「ウンコありましたよーおいてきますねー」とドサっとウンコの山をおいていき、しかもそれが延々と繰り返されている。そして当人たちはウンコデリバリーをしていることに気がついていない。いや我々ウンコしてるのわかりますし時々下痢だったり便利だったりでっ困ってるのも事実ですが、ウンコの現物を投げ捨てる以外の方法でコミュニケーションしてもらえませんかね・・・。
  • 別にウンコ配達団には悪意もなく無能でもなく、組織の歪みが彼らをそうしてしまったので恨んでも仕方ない。しかし悪臭満ちる部屋を掃除をするのは自分なので、なんとかリスペクトのある方法で「すにませんがウンコ配達やめてもらえませんかね」と伝えなければいけない。しかしそれは休暇明けの仕事とさせていただきます。
  • こういう組織の歪みのないところで働きたいと思っていた時期もあったが、社内だと組織の歪みの少なさはトイレのないクリーンな街(ただし城壁の外はスラム)みたいな解決をされがちで、それよりはトイレとウンコの世界で生きてく方がマシというのがここ数年の結論。排除ではなく対話と理解、みたいな。
  • ワクチン回ってきて頭痛・・・。

2024-11-23

2024-11-24

  • ワクチンの熱と頭痛が去り、それと一緒に風邪も治った気がするので久しぶりにジョギングをしたが、めっちゃ体力落ちてるな・・・そして体が重い。夏から数kg増量してしまったので。冬の間の健康を保つのは大変。
  • 妻子外出中なのでハッカーニュースデータあそびの続きをやろうと思ったが、何をしていたか忘れた。ここにダラダラに書くのではなく、そろそろもうちょっと真面目な記録が必要。Notion なり Docs なりを使っても良いんだけど、どうせ無害無益な作業なんだからインターネットのコンテンツにできたら良いのになあ。
  • コードなんだから GitHub でやればいいじゃん、という話はあるんだけど public repo にしたくないのだよねー雑に API key とかの credential を突っ込めなくなるので。そういう行儀の悪いことをしなければいいってのはわかるんだけど、余暇作業で行儀とか気にしたくないんですよ。
  • まあインターネットコンテンツのことは忘れて一人余暇プロジェクトの作業記録はどうあるべきかというと、どうなんですかね。
  • これが仕事だとどうかというと、 手元の時系列 Docs, バグ+作業トラッカー, Design Docs などのまとまったドキュメント, コード内の README-ish ドキュメント、報告 Docs(aka updates/newsletter) といった具合なわけだ。最後の報告 docs は明らかに不要として、他はどうなんだろうね?区分としてはありうる気もするのだが。と上では用途とメディアをいっしょくたにしているが、それらは切り離していいはずである。つまり {時系列の作業記録, デザインの文書化, README(コマンドとかの記録), タスクリスト} というのに、それぞれメディアを紐付けて良い。
  • このうち自明なのは後者2つで、README みたいのはコードの近くにあるとよいので repo 内の .md でよい。タスクリストは GH Issues/Projects なりを使えば良い。
  • デザインの文書化はそもそもいるのか、という疑問はあるが、書き出すと整理されるの事実はあるし、データレイアウトとかは文書化しといた方が後に混乱しなくてよい。なので、あっさりと必要。この DD-ish docs は仕事だと都合により Docs のような SaaS に置くわけだが、別に repo 内 MD で良いのではないか。コミットしてしまえば GitHub 上で整形されるし。
  • 最後に時系列の作業記録で、これはねー・・・。仕事以外で Docs とか使いたくねーわ、という気分がある一方、Notion はなんかダメなのだよね。長くダラダラ書けない。すぐ壊れる感じがある。理想的には古き良き Blog なんだけど、WP はきな臭くて嫌だし・・・。みたいな。案外 repo 内 hugo みたいのがいいのかもしれない。
  • Hugo 以外・・・というアイデアを数分 entertain したが、無駄なので hugo に stick すべし。publish するわけでもなし。
  • などと思いつつ Hugo をつついて割と初期設定が大変なのを思い出し挫折。めんどくせーから docs でいいわ・・・。

2024-11-28

2024/11/30

  • はー早く休暇おわんねーかな。運動不足だわ(仕事不足ではない)。
  • 余暇プロジェクト、少し真面目にデザインした方がいいのだが、真面目に考える時間と気力がなく停滞。はー。