diff --git a/article/tech/comfyui-on-nixos.md b/article/tech/comfyui-on-nixos.md new file mode 100644 index 0000000..1e6e4f3 --- /dev/null +++ b/article/tech/comfyui-on-nixos.md @@ -0,0 +1,123 @@ +--- +title: ComfyUIをNixOSで動かす +tags: + - Linux + - NixOS + - AI + - Stable-Diffusion + - ComfyUI +image: /uploads/error.png +publish: public +--- + + + +[ComfyUI](https://github.com/comfyanonymous/ComfyUI)をNixOSに導入します。Installingの項が簡潔にまとまっているので、そんなに苦労しませんでしたが一応備忘録として残します。 + +前にArchでSDWebUIを導入する記事を書きましたが、なんかComfyUIいいぞと言う話を聞いたので、新環境に導入してみます。Stable Diffusion WebUIと比べてシンプルで導入も楽でした。 + +今回検証に使った環境は以下のとおりです。 +dist: NixOS +desktop: Wayland(hyprland) +cpu: Ryzen 7900X3D +gpu: Radeon 7900GRE + +# 実行環境・依存関係 + +ComfyUIはCloneできているものとします。 + +Pythonをflakeのdirenvで導入します。ディレクトリのルートに`flake.nix`を作成します。 + +```nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs"; + flake-utils.url = "github:numtide/flake-utils"; + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + }; + + outputs = + { + self, + nixpkgs, + flake-utils, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + pythonEnv = pkgs.python3.withPackages (ps: [ ]); + in + { + devShells.default = pkgs.mkShell { + packages = [ + pythonEnv + ]; + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath ( + with pkgs; + [ + stdenv.cc.cc.lib + zstd + ] + ); + }; + } + ); +} +``` + +きちんと依存パッケージを定義できますが、今回はvenvで茶を濁します。torchまわりのパッケージを定義するのは面倒でした。 + +`LD_LIBRARY_PATH`はシェアライブラリの場所です。libstdc++とlibzstdが要求されるので、その解決をしています。 + +## pip + +venvを利用するので、pipが使えます。 + +最初にvenvを作成します。 + +```sh +python -m venv venv +``` + +その後、venvに入ります。 + +```sh +source venv/bin/activate +``` + +venvの中で、必要なパッケージをインストールします。まずはtorchまわりから。 + +```sh +pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.3 +``` +コマンドは[pytorch.org](https://pytorch.org/get-started/locally/)で教えてくれるやつです。 + +その後、ComfyUIの依存パッケージをインストールします。 + +```sh +pip install -r requirements.txt +``` + +# 実行 + +venvに入った状態で、ComfyUIを起動します。 + +```sh +source venv/bin/activate +``` + +```sh +python main.py +``` + +これでComfyUIが起動します。 やったね! + +# おわりに + +Pythonの環境管理がだるい論はよく聞きますが、flakeとvenvを使うと雑に楽できていい感じでした。もとからpythonのパッケージまわりは行儀が悪いので、中途半端なflakeも許されるはずだ。 \ No newline at end of file