たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

Lockファイル生成と動かせない依存性

Lockファイルは依存性のバージョンを厳密に指定することで動作を保証することを目的とする.

依存性の中にはハードウェアとの兼ね合いで(動作は同じ)ハードウェア固有バージョンを要求する場合がある.

この2つは噛み合わせが悪い.
Lockで厳密に縛るとハードウェア移植性が無くなる.
Lockを無くせば移植はできるが動作保証がゆるゆるになる.

現実的な解決策は "ハードウェア依存のあるライブラリをパッケージ管理から外す"
こうすると固有バージョン以外の要素はLockで管理され、かつハードウェア依存要素は環境ごとに入れられる.

理想としてはDocker等の環境構築側でハードウェア依存要素のバージョンを管理し、その上で動くパッケージをLockで管理.

GPU依存性のあるパッケージはこれがしばしば見られる.
PyTorchの依存性管理むずかしい.