blog-articles/article/tech/comfyui-on-nixos.md
2025-02-07 01:06:45 +09:00

123 lines
3.1 KiB
Markdown

---
title: ComfyUIをNixOSで動かす
tags:
- Linux
- NixOS
- AI
- Stable-Diffusion
- ComfyUI
image: /uploads/error.png
publish: public
---
<script>
</script>
[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も許されるはずだ。