How GC in unsafe loxido works

ceronman/loxido: Rust implementation of the Lox programming language. How to allocate object let bar = gc.alloc(LoxString::from_string("bar".to_owned())); LoxString::from_string and GcObject implementation. They are staraightforward. pub s…

Finalize, Sweep and Rooting - Understanding Rust GC

Finalize Trait Previously we explored Trace in Trace - Understanding Rust GC - higepon blog. Let's look into Finalize trait. This is really simple. Every GC-ed object should implement this finalize. pub trait Finalize { fn finalize(&self) …

Trace - Understanding Rust GC

Goal I want to understand how Rust GC work to see if I can use it in my Scheme VM interpreter to be written in Rust. How to use GC-ed objects should implement Trace and Finalize. You should use Gc::new instead of Box::new to allocate objec…

Mosh compiler/VM のデバッグを1週間続けた話

Mosh は R7RS に対応しつつあるので ecraven/r7rs-benchmarks というベンチマークを走らせてみた。今回は速度は気にせずにR7RS Scheme 処理系としてコードを間違いなく正しく実行できるかに注力。結局57個中で3つのベンチマークで実行に失敗することが分かっ…

Scheme で MNIST 続き

Scheme で MNIST からの学び - higepon blog の続き。 f64array 前回のプロトタイプをもとに Mosh のシステムライブラリとして f64array というものを導入した。double 型の2次元の行列を表現したもの。追加した手続きは最低限のもの。 make-f64array f64arr…

Scheme で MNIST からの学び

久しぶりに Mosh Scheme に触っている。良い機会なので ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 を参考に Scheme で動く MNIST デモを実装しようと思い立つ。MNIST は 0 から 9 までの手書き数字の認識デモ。Neural Network…

Mosh + clang-tidy

伝説のプログラマのポッドキャストJohn Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast #309 - YouTubeを聴いていたらデバッガと static analyzer がいかに素晴らしいかを説いていたので clang-tidy を使って…

Mosh + GitHub Actions

okuoku@ さんの助けもあり GitHub Actions で Mosh を Ubuntu / macOS でビルド・テストするようにできた。これが可能になったのは夏休みに Docker で複数の環境構築・テストをすることにより 64bit Ubuntu で動くようになったから。

CS25: Transformers United を受講した

Stanford CS 25 Transformers Unitedを受講した。猫も杓子も Transformer という時代なので基礎の復習とキャッチアップを兼ねて。 良かった点 Transformer の基礎の復習がきちんとできた self attention について「分かったような分からないような」という理…

The Rust Programming Language を読んだ - 2022夏休み

〇〇言語の後継XYZ言語がリリース。とニュースがあるたびに「少し触っとくか?まあいいか」を繰り返し。最後に「新しい」言語を学んだのは Swift という状態だったのでRust の本をオンラインで読みできる限りコードを写経した。以下感想。 メインで学びたか…

データ解釈学入門を読んだ - 2022 夏休み

統計検定2級や Kaggle で学んだものたちの隙間を埋めてくれる良い本だった。どことは言わないが、読んでいる途中に仕事のことを思い出す記述があり背筋がピンと伸びた。以下雑多なメモ。 分析者のためのデータ解釈学入門 データの本質をとらえる技術作者:江…

Bitcoin and Cryptocurrency Technologies を履修した - 2022 夏休み

Coursera の Bitcoin and Cryptocurrency Technologies | Coursera というクラスを履修した。Princeton University が提供している仮想通貨のオンライクラス。 自分は仮想通貨を所有していない。仮想通貨やそれらにまつわる技術については、どこかのまとめ記…

Mosh の Apple Silicon 対応 - 2022夏休み

scheme.org の方から mosh.scheme.org の利用について声をかけていただいた。せっかくなので Mosh の Apple Silicon 対応をしようと思いたった。なお最後のリリースは 0.2.7 で 2011/6/14 に okuoku さんによって行われている。10年以上前である。 C/C++ で…

Machine Learning Design Patterns

Scaling Min-max & clipping は一様分布に良い Z-score は正規分布に良い。 input data によっては non-linear な変換の方が適切。例えば Wikipedia page views。これは正直意識してなかった。 この視点で圧力コンペのデータでやってみた(02-01-scaling.ipy…

MATHEMATICS FOR MACHINE LEARNING の読書記録

いくつかの Kaggle competitions を経験し数学の復習が必要だと気づいたので Mathematics for Machine Learning を読む。まずはトライアルで2章を読み切る。新・数学の学び方 を参考に以下のルールで読みすすめる。 数式を完全に分かるまで追う。 実際に手を…

Indoor Location & Navigation コンペ振り返り

Indoor Location & Navigation というコンペで9位入賞。目標だった Kaggle Master になったので振り返り。これはチームメイトである @KaggleSaito さんとの成果である。 どういうコンペか? 与えられたスマホセンサーデータ(Wifiなど)からショッピングモール…

Visual Studio Code キーバインディング微調整

Command Palette にアクセスするキーバインドが動いていない気がする ctrl + ; に割り当てた when expression を空にしないと動かなかった Go to Definition cmd + t Go Back cmd + r Ctrl x b が効かない。 Karabiner-Elements がバッティングしてた。Karab…

Riiid コンペ復習 - maskingなど

これは Riiid! Answer Correctness Prediction | Kaggle において自分が理解できていなかった部分をまとめるもの。間違いを含む可能性がある。間違いを見つけたら @higeponja にお知らせください。 Riiid はいわゆる time series コンペ。きちんと masking …

Google Football コンペ

銅メダルでした。 以前のRLコンペから学んでやらなかったこと DQN などの自前実装:自分の学習のためなら良いが、自前実装はバグりやすくたくさんの罠がある。すでに動いているベースラインが運営から提供されているのでそれを使う。そうすれば reward / obs…

Visual Studio Code + Docker for Kaggle

Kaggle 用の docker image が公開されているのでそれを Mac 上の Visual Studio Code 使う。 やったこと Remote-Containers という拡張を入れて拡張経由で docker を使う。これは host と container 内の両方で Visual Studio Code を起動するので開発環境=…

Karabiner-Elements

Karabiner-Elements を使っていたのだが Visual Studio Code で有効になり困っていたので入れ直す。 それでしたら frontmost_application_unless でできます!オフにしたい機能ごとにこういう条件をmanipulatorsに付けるとできます。bundle_identifiersは htt…

Kaggle Halite コンペ + 強化学習

Halite by Two Sigma | Kaggle に参加していた。今回はお誘いいただいて @threecourse さん と @Seed57_cash さんとチームで挑んた。 コンペの目的 4人プレイの岩塩(halite)集めゲーム 1プレイヤーが複数の shipyards and ships を操作することが可能 盤面サ…

DQN デバッグメモ

デバッグの過程をまとめる。ほぼ自分用。 自分用のまとめ PyTorch でも tensoarboard を使ってたくさんログをとる。ログをとればおかしいところはみつかる。 ログすべきもの observation を tensorboard で visualize する。 次の最善手が分かっている obser…

Reinforcement Learning の self play についてのまとめ

強化学習の self play について知りたいことがあるので、ざっくりと有名な論文を読んでいく。熟読はしない。 知りたいこと self play は同一インスタンス、別インスタンスどちらか? 直感的にはどこかで stuck しそうな感じがするけど? 学習が進んでいるこ…

Jupyter/Colab における pyplot リアルタイム描画

強化学習の様子を visualize するために pyplot でグラフをリアルタイム描画していたが遅くて筋が悪いのでやめた。inline で表示すると plot 数が増えると極端に遅くなりボトルネックになる。inline リアルタイム描画をやめて、画像ファイルとして出力して i…

強化学習/RL/Reinforcement Learning のデバッグ方法

RL のデバッグは難しい。RLアルゴリズムの選択、適切な reward の設定、Deep RLの場合モデルの選定、実装の正しさ、適切なパラメータ、そもそも学習できる問題なのか。切り分けが難しい。世の中には同じように思っている人がたくさんいるようだ。情報元から…

RL での batch size

Reinforcement Learning を Welcome to Spinning Up in Deep RL! — Spinning Up documentation で勉強しながら実装している。とある実装で batch size = 5000 となっていて「値が大きすぎる」と思い、何気なく小さな値に変更した。それをすっかり忘れて試行…

OpenAI Gym の MountainCar が難しいという話

Vanilla Policy Gradient を勉強・実装している。CartPole はうまく学習できるのに MountainCar の学習が進まない reward -200 であり続けるという減少にハマった。RL のデバッグは本当に難しく、観察してもよくわからなかった。検索してみるとまさに同じ減…

Colab + PyTorch Lightning + Comet ML + Bert

Colab + PyTorch Lightning + Comet ML - higepon blog の続き。 目標 Tensorflow 2.0 コンペで自分が書いた training のコードを Colab + PyTorch Lightning + CometML に移植する。移植したことでメリットがあるかを検証する。 Google Drive の利用とその…

CUDA error: device-side assert triggered

CUDA error: device-side assert triggered のデバッグで苦労した。結論からいうと CUDA error は本当にデバッグが難しい。同じモデルを GPU ではなくて CPU 上で動かせば、もっと親切なエラーメッセージが見られる。CPU で再現しない場合は CUDA_LAUNCH_BLO…