====== CoreML関係の覚書 ====== 結局のところM1 MacBook proで 16GB, 2TBのSSDで学習させたら全部うまく行きました。ちなみにeGPUは学習できることはできるけど、徐々に止まっていくという謎挙動。学習用マシンをハイスペックで準備しておけば基本的にはよさそう。 ===== Create ML ===== 超お手軽で簡単に学習できるけど、ユーザ再度に見えないものが多くありすぎて振る舞いが謎すぎたのでここに忘備録。もともとiseeプロジェクトの物体検出モデルをweightsからcoremlに変換してたんですが、そもそも最初からcreatemlつかってcoremlモデルを生成しちゃえばいいじゃんっていうのと、M1の登場もあったので、今後の事考えると研究室でやっているプロジェクトだったら学習自体もMacでやってもいけるかもと思い始めたんでちょっとやってみたという経緯。結果として多分使えそうだけど、物体検出はyolov2なので精度はおちそう。でも公式の学習だから安心感あり。weightsからh5いってcoremlみたいな流れにならないのでサステイナブルであるのも嬉しい。 * Create ML Version2.0(53.2.2) * ディスク容量が80%を切ると高確率で学習がとまる * メッセージは Unexpected Errorのみで詳細不明 * 一応ダイアログがでて、やめるか複製するか、キャンセルかが選べるので、この場合はキャンセルしておく。 * 原因はおそらくディスク容量制約だとおもわれる。このCreate MLがまじで10ごとにチェックポイントを保存しまくってるのと、キャッシュでmlmodelcを保存しまくってるのとで、物体検出の場合は10イテレーションごとに約100MBのディスク容量を消費していきます。そのため結構大きいストレージでもすぐにいっぱいになっちゃう。単純に計算すると、10iteで100MBなので、1000iteだと10GB, 10,000iteだと100GB, 100,000iteだと、1TBが単純に必要になってしまいます。 * 容量を増やせば解決できるもんだいですが、これがまた厄介でCreate MLのこれらキャッシュはシステム上(/var/folders)に勝手に保存されるため、保存場所をこちらで指定できません。そこで、現行のバージョンでは定期的にこれらキャッシュを自動的に消す工夫をおこなうことで、継続した学習ができることを確認しました。 * ただしキャッシュが生成されたそばから消しても大丈夫なのかはこれから確認します。 watch -n 300 'find . -mmin +5 -maxdepth 1 | xargs -I hogehoge find hogehoge -name "training-*.checkpoint*" -maxdepth 1 | xargs -I hogehoge rm -Rf hogehoge' a watch -n 300 'find . -name "*-*-*-*-*" -maxdepth 1 | xargs -I hogehoge find hogehoge -mmin +5 -maxdepth 1 | xargs -I hogehoge rm -Rf hogehoge' https://developer.apple.com/download/more/