2021年3月14日
アウトドア用の椅子である、ヘリノックスのチェアツーが届く。組み立て収納も簡単、座り心地も悪くない感じで一台買って良さそうだったので、妻も一台買って、天気の良い今日、早速海辺の公園に行って本を読む。公園は平和で、風が吹くと少々寒いとはいえ快適に過ごせた。ちょくちょく外でゆっくりしたい。
夕食のホタルイカのぬた、が大変美味しかった。普段はそのまま食べてしまうホタルイカなのだけど、下処理で目・口・軟骨を一つ一つ取り出したとのことで、臭み苦味が無くなって美味しくなる。
機械学習学習日記 - 41日目
scikit-learnとTensorFlowによる実践機械学習の18章、強化学習を読む。簡単なゲームへの強化学習の適用から、実際にatariのエミュレータを使い、強化学習フレームワークであるTF-Agentsを使って学習する。あまり興味がないところなのでサラッと。
続いて、19章(最終章)の大規模なTensorFlowモデルの訓練とデプロイを読む。実際のTFのグラフ構造と保存・復元、それをデプロイして使えるTF Servingの使い方。ディレクトリ構造でバージョニングができ、ディレクトリを増やすだけで新しいモデルになる。また TF Serving は REST / gRPC で通信ができる。本番では自前で環境を作っても良いし、GCP AI Platform にデプロイしても良い。マネージドサービスでオートスケールが動くのは楽そうだ。
また、いわゆるエッジデバイス(ラズパイやスマートフォン)で動かすために、モデルを小さくして動かせる TF-lite、ブラウザでモデルを動かせる TF.js の話も。どれだけ小さく最適化したモデルを作れるのか、というトピックは実世界では大切で、それらをまとめた書籍、TinyMLなんかもある。他にも、大きな学習のための、分散、並列化、クラスタ構築の手法などなど。
19章はML/NNが関わらないエンジニアリングの話で、最近理解が難しい話が多い反面、理解しやすく面白かった。時々癒やしとして、解る、解るぞ~という内容が含まれると安心感がある。
scikit-learnとTensorFlowによる実践機械学習 第2版を一通り読み終え、NNの浅い理解は進んだ。この本のMLやNNについて説明が解かりやすいか、と言われると(翻訳の可能性もあるが)、自分の知識ではわかりやすいというわけではなかった。
しかしながら、サンプルコードレポジトリがとても良くできている。最新に合わせて適宜アップデートされていて、例えば今はTF2.4の最新で使えるコードに変更されている。紙面から変わった点はコメントで記載がある。
環境依存になりがちな部分(python とライブラリのバージョン)、を conda の env として固定したり、そのDockerfileを用意したりすることで問題なく実行できるようにしている。毎回 numpy / tf の seed を固定することで、書籍通りのアウトプットをする、各種notebookからそれを実行できるcolabへのリンクが貼られてる、colab かどうかの判定、GPUを使っていないとGPU活用するnotebookは遅いよとのwarningがでる、などなど。
他にも、numpy, pandas, matplotlib は notebook を用意することで、知らない人は一通り実行してみてね、そうじゃない人はそのまま進めて良い、と紙面を大幅に減らしていたり。また、TensorFlowに関する部分、とりわけtf.dataの前処理・パイプラインはとても参考になって、実際知っていることでスムーズに、簡潔に書け、速度向上にもつながりそう。
等々トータルで考えると、読んで失敗したなぁという思いはない。github で公開されているサンプルコードの Jupyter Notebook はこれからもコードの断片としてちょくちょく利用しそうだ。