feat: containerize deployment#584
Conversation
|
I believe the maintainers of this project need to carefully evaluate the role of Nosana within this project. At present, its necessity is unclear, and incorporating it as a core dependency introduces significant architectural and security concerns. Specifically, the current approach relies on downloading and executing custom container images that are not authored or maintained by the upstream project owners. This creates a situation where users cannot independently validate provenance or integrity, which poses an unacceptable security risk in production systems. Even with the best intentions, such a design decision exposes the platform to supply-chain vulnerabilities and undermines trust in the deployment pipeline. Before adopting Nosana as a feature, the original author of this PR should first establish a clear justification for its inclusion and ensure there are verifiable mechanisms for image authenticity, maintenance responsibility, and long-term support. |
Firstly, great work on this project. That said, I found the installation process to be quite complex, involving too many manual steps. From experiencing running an open sources project this will deter non-developers and take dev time solving various system edge-case with WSL.
To address this, this MR introduces a containerized solution that simplifies installation and also supports cloud-hosted environments such as Nosana and DigitalOcean GPU.
For Windows users, I suggest updating the installation guide to use WSL (via the Windows Store), which makes setup less intimidating. From there, the workflow would involve installing Docker Desktop, installing and configuring nvidia-ctk, and running the service in a container. This ensures all Python dependencies and environment configuration are handled automatically.
Example run command:
Notes
I have successfully tested the image on a remote server using Nosana, a decentralized GPU compute network, since my local GPU doesn’t have sufficient VRAM. Below is a link to the job results, along with a deploy folder included in this MR containing the Nosana configuration used for the job.
🔗 https://dashboard.nosana.com/jobs/GJuMb2wQqxK1qNSAx8gpmfNVdhzXoPkYpkN8hesZM6wS
Update
I have added a build arg to remove the model from docker image and published a modelless version. I have also optimised the Nosana deployment to pull model prior to launching the container utalizing HF fast model storage for quicker spin up.