5 ms·
I've tried a number of ML projects like this too, and sometimes they do work – Bodypix is one example (though not precisely the same thing). That being said, i
by Jarred 6y ago
I've tried a number of ML projects like this too, and sometimes they do work – Bodypix is one example (though not precisely the same thing).
That being said, its usually pretty difficult to get code from papers to build/run successfully due to dependencies (e.g. depending on a specific version of Python and OpenCV 2 and requiring CUDA support)
- yboris 6y agoCould anyone explain why version numbers make ML stuff so brittle? Why is the CUDA version supposed to match? Why would a newer version of python (3.7 vs 3.6) would ever break anything? TensorFlow is a crapshoot as far as I understand, constantly changing making newer versions incompatible; but why do other libraries break backwards compatibility without a major version bump?
- aprdm 6y agoBecause software is hard. You might be relying on a function that only exists in 3.7 and not in 3.6, code written in 3.6 would work but new code using 3.7 features won’t be backwards compatible. With compiled code the errors are usually very hard for “more used to scripts“ people to decode. You get stuff like missing symbols in the linker phase. ML projects usually have a lot of libraries so you also get in the transient dependencies breaking quite often...
- ryukafalz 6y agoYeah, managing dependencies is tricky. I've been super excited about Nix and Guix lately for that reason; if you have a single Nix/Guix revision and a list of packages, you have all the information you need to build exactly the same package tree. (With bit-for-bit reproducibility where possible, no less!) Some language-specific package managers can do similar things, but you really only get reproducibility for the whole system with a general-purpose package manager. Poetry gets you pretty far within the Python ecosystem, but if you need a specific version of Python/specific native libraries/etc... it doesn't get you all the way there.
- sansnomme 6y agoBecause dependency management for anything C/C++/Python related has often been a massive cluster* * * *. Rust's npm style package management is probably the greatest innovation to have hit low level programming in a long time. Not to mention anything Nvidia related is often closed sourced so you are programming against a black box API by a vendor infamous for their bad driver quality on non-Windows systems.