PyTorchの内部構造が丸わかり!? Ezyang氏のブログがアツい
引用元:https://news.ycombinator.com/item?id=43445931
同じ作者のPyTorch Developer Podcast[1]も面白いよ。皿洗いしながらPyTorchの内部構造を知るのってなんか良くない?
[1] https://pytorch-dev-podcast.simplecast.com/
ポッドキャスト形式の問題点は、ブログみたいな視覚的な媒体よりもAPIに対する知識を前提としてるところだと思うんだよね(皮肉だけど)。
確かにね、でも誰かが挑戦してくれるのは嬉しいよ。天気の話とか、無駄話には興味ないんだよね。なぜかほとんどのポッドキャストはそれに焦点を当ててる気がする。
これ懐かしいな。Edが発表したPyTorch NYC meetupの企画手伝ったんだけど、今までで最高の技術プレゼンの一つだと思う。手描きのスライドが最高だったのに、録画しとけばよかった…
MLフレームワークの内部構造を学ぶには、MLXのソースコードを読むのがおすすめ。
https://github.com/ml-explore/mlx
MLXはモダンでクリーンなコードベースで、レガシーもないから、外部の記事を探さなくてもほとんど理解できる。
なんでMLXはApple silicon専用なの?x86で動作しない根本的な理由があるの?一部のコア機能はApple siliconでのみ可能なの?それとも開発者がx86への移植を拒否してるの?
MLXはいい感じの自動微分機能があるみたいだよね。配列のミューテーションの微分もサポートしてるし。
普通のCPUでもこの機能が使えると嬉しいんだけど。
ほとんどの機能はすでにx86 CPUでサポートされてるよ。Linuxならpip install mlxできるし、Windowsでも使える(まだ公式バイナリはないけど、ビルドはできてテストも通ってる)。
unified memoryに大きく依存してるんじゃないかな。
いい記事だね、投稿ありがとう。記事で言及されてる自動微分の概要はこちら。
https://medium.com/@rhome/automatic-differentiation-26d5a993…
スライドの長いバージョンって感じかな。内容は良いけどね。
https://web.mit.edu/~ezyang/Public/pytorch-internals.pdf
Edwardのプログラミング言語の授業、10年くらい前に受けたんだけど、スライド見てすぐにわかったよ!なんか嬉しいね。
わかるー!Edward、マジ最高だった。Haskellのモナドを理解できるようにめっちゃ頑張ってくれた。
StanfordのCS 240hでEdwardはホント親切だった。Safe HaskellとGHCの内部構造を理解するのに助けてくれた。
長文読むのが苦手な人向け:テキスト読み上げ機能と行のハイライト表示を試してみて。マジで効果あるよ。集中力切れるのが治った。
記事は問題なく読めたけど、スライドが目にキツイ…。
スライドが本文中で何度も参照されてるから、飛ばせないんだよねー。
へー。TORCH_CHECKをこんな風に書くかな:
>TORCH_CHECK(self.dim() == 1)
> « ”Expected dim to be a 1-D tensor ”
> « ”but was ” « self.dim() « ”-D tensor”;
TORCH_CHECK()って、チェックが失敗した時だけstreaming operatorsを評価するように書けるんだね。(glogの仕組みをチェックしてみて。)
dev forum roadmaps[1]とdesign docs(例:[2]、[3]、[4])も参考になるよ。
[1]: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2025-h1-…
[2]: https://dev-discuss.pytorch.org/t/pytorch-symmetricmemory-ha…
[3]: https://dev-discuss.pytorch.org/t/where-do-the-2000-pytorch-…
[4]: https://dev-discuss.pytorch.org/t/rethinking-pytorch-fully-s…
2019年の記事か。今でもどれくらい通用するんだろ?
数年前にPyTorchチームにオンボードする時にこの記事使ったよ。フレームワークのキーコンセプトを理解するのに役立つ。Torch.compileについては触れられてないけど、それ以外は今でもかなり参考になる。
もっとコメントを表示(1)
たぶん80%くらいかなー
複雑なシステムを理解するには、よりシンプルなモデルシステムを理解するのが良い場合があるよね。同じシステムの古いバージョンが良いモデルシステムになることもある。いつもそうとは限らないけど、良い経験則だと思うよ。
ところで、pytorchを汎用グラフライブラリとして使う良いリソースって誰か知らない?nets = forward-only(acyclic) digraphっていう前提を超えたやつ。
これのビデオ版ってあるのかな?トークからのものみたいだけど。