python
【ray】@remoteがメモリを大量に食う時はray.put()を使おう
· ☕ 2 min read
はじめに rayとは → https://github.com/ray-project/ray 分散並列処理を簡単に書けるフレームワーク ray.remoteは怖い @ray.remoteが付された関数が使用するオブジェクトは, 呼び出される都度内部でray.put()が呼ばれ, データがメモリ上に展開される 若干この仕様が厄介で, ray.get()なんかを使うと, 同じオブジェクトを何度もメモリ上に展 ...

pycocoevalcapのMETEORがバグる (self.meteor_p.stdin.flush)
· ☕ 1 min read
なぜかpycocoevalcapでMETEORの計算が止まる問題 どうやらself.meteor_p.stdin.flush() あたりで止まっているらしい 結論から言えば, 俺の場合キャプションに\nが入っていたせいだった そもそもCOCO captions のキャプション自体結構汚いので注意 変な改行入ってたり, キャプションがなぜか6つあったり ...


必要なものだけpip freezeする方法
· ☕ 1 min read
pipreqsという非常に便利なライブラリが存在する pipreqs . だけでimportされているライブラリだけを出力してくれる マジで便利 例 pipreqsを使えばこれが出力される 1 2 3 4 5 6 7 8 9 10 11 12 ❯ pipreqs . && cat requirements.txt colored_traceback==0.3.0 h5py==3.7.0 matplotlib==3.5.3 nltk==3.7 numpy==1.23.2 Pillow==9.2.0 pycocoevalcap==1.2 skimage==0.0 torch==1.8.2+cu111 torchvision==0.9.2+cu111 tqdm==4.64.0 pip freeze だとこれ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ...

ストレスなくpdbを使う方法
· ☕ 1 min read
TL;DR pdbを使おうとすると, ブレークポイントが必要かどうかに拘らずcを入力する必要がある →ストレス😠 -m pdbだけでなく-c cをつけると自動でpdbモードに入ってくれる →ストレスフリー✨ 1 python -m pdb -c c main.py なので ~/.zshrcに 1 alias pdb="python -m pdb -c c" とでも書いておけば, デバッグしたいときにpythonをpdbに変えてしまうだけでいいの ...

fork vs spawn
· ☕ 1 min read
Fork 親プロセスをそのままコピーするので, メモリを圧迫する Spawn 親プロセスから必要なメモリだけコピーして, 立ち上げるので省メモリ 新たにインタプリタを起動するので遅い link1: https://britishgeologicalsurvey.github.io/science/python-forking-vs-spawn/ link2: https://itsuka-naritai.com/2021/04/18/multiprocessing-forkとspawnの違いを理解する/ CUDAはs ...

faiss
· ☕ 1 min read
k近傍法 とか最近傍探索とかクラスタリングとかできるらしい CPU / GPU 両方とも用意してあるが, err == CUBLAS_STATUS_SUCCESS faiss という謎エラーのためプロジェクトではCPU版を使うことに https://github.com/facebookresearch/faiss ...