S4TF
Chris Lattner
Swift for Tensorflow
github
2022/11/9にarchiveされている
2021の時点で止まっていたっぽい
https://www.tensorflow.org/swift
install
swift/Installation.md at master · tensorflow/swift
installはしたが、import TensorFlowは一回もうまく行っていない,,,
replでも、xcode上でも、、、
tutorial
Model training walkthrough  |  Swift for TensorFlow  |  TensorFlow
https://github.com/Ayush517/S4TF-Tutorials
colab試すよう
https://colab.research.google.com/github/tensorflow/swift/blob/master/notebooks/blank_swift.ipynb
https://www.youtube.com/watch?v=Yze693W4MaU
https://twitter.com/_tkato_/status/1148750109699559424
ただのTensorFlow APIラッパーではない
Swiftのコンパイラに手が入っている
コード実行の前に行列計算の次元などの型チェックができる
Pythonの互換性もある
具体的には?
研究のためのUsabilityとPerformanceを実現する
Docsを読む
Why Swift for TensorFlow
以下の3つの機能は、Swiftでなくても実装できる
Graph Program Extraction algorithm
automatic differentiation
Python language interoperability
tfのuserbilityを向上させることが目的
研究者や、エンジニア
tfを使う人が生産的で楽しめるものに
静的チェックが必要なためPythonはGraph Program Extractionを実現できない
プロジェクトの目的
表現力
メタプログラミングせずに、直接的に数値APIやホスト言語をプログラミングしてるように感じられるように
パフォーマンス
CPU, GPU, TPUなどの上で高速に
スケールする場面で使えるようにサポート
速い反復時間
生産的なワークフローにするためにツールが邪魔をしてはならない
デバッグの容易さ
etc
Pythonの強み
コミュニティ
学習曲線が緩やか
メモリ安全
など
Pythonの課題
パフォーマンス
並列性
GILなど
Custom Ops
C++, CUDAなど
よくわからんmrsekut.icon
Custom Opsがそもそも何のためにあるのか
何が大変なのか
https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md#properties-needed-by-graph-program-extraction
から未読
Graph Program Extraction
自動微分の利点
ユーザー定義のデータ構造をさぽーと
tf以外のライブラリにも組み込み可
想起にErrorをチェックできる #??
コンパイラが必要なのでPythonでは実現できない
Graph Program Extraction
自動微分
Python Interoperability
Pythonの長所の1つが科学計算ライブラリの充実
Swift for TensorflowではPythonライブラリをあたかもSwiftのライブラリのように使える
ptyhon のランタイムをembedしてる
pythonは動的型
swiftは静的型
pythonのライブラリをあたかもswiftのライブラリとして使う
swift 4.2
dynamic member lookup
rubyのmethod missingのようなもの
静的型付けなのに?
tf
python上でsyntax treeを作り、それを微分
メタプログラミングっぽい
DSL
pytorch
chainer
実行結果を全部記録
遅い
swiftのコードをパースし、構文木を取り出して、微分をさせる
コンパイラのAPIを使って(?)
既存のフレームワーク
Pythonのパースした結果を取るAPIを使ってPyTorchやCaffeの実行エンジンで動くものに変換する
Pythonのサブセットを使って、マシンラーニングのモデルを表現する
Swift for TensorflowはPythonのサブセットを使わない
というかサブセットじゃなくて良くする
Pythonで表現できないものは、Swiftに戻ってきて実行する
どんなコードを書いても
tfでできるところはtfで、できないところはSwiftのコンパイラがネイティブのコードにする
TF XLA
https://www.google.com/search?q=tf+xla&rlz=1C5CHFA_enJP722JP722&oq=tf+xla&aqs=chrome..69i57.2122j0j1&sourceid=chrome&ie=UTF-8
https://www.slideshare.net/ssuser479fa3/tensroflow-xla-jit
https://www.slideshare.net/ssuser479fa3/tensorflow-xla-79825262
facebook
Tensor Comprehensions
intel Ngraph
https://www.google.com/search?q=intel+ngraph&rlz=1C5CHFA_enJP722JP722&oq=intel+ngraph&aqs=chrome..69i57.14222j0j1&sourceid=chrome&ie=UTF-8
amazon nnvm
https://aws.amazon.com/jp/blogs/machine-learning/introducing-nnvm-compiler-a-new-open-end-to-end-compiler-for-ai-frameworks/
https://qiita.com/nuka137/items/e35e718807e35b659cb0
https://qiita.com/ashitani/items/e85231297247ec036128
https://github.com/dmlc/nnvm
ためす
https://qiita.com/mitsuharu_e/items/68f51704635c43f3f45a
https://pgm-diary.hateblo.jp/entry/hello_s4tf
https://koherent.org/iosdc/2018-trailer
https://stackoverflow.com/questions/54015543/swift-kernel-in-google-colaboratory
https://tech.unifa-e.com/entry/2018/05/11/140751
https://note.mu/shu223/n/n39af40d8163d
https://www.ikkitang1211.site/entry/2018/04/30/122914
http://seesaakyoto.seesaa.net/article/465201045.html
参考
rebuild.fm 206
Swift for TensorFlowと新たなプログラミングモデル - Qiita
一通り調べた後にもう一度読もう