123 lines
3.1 KiB
Markdown
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も許されるはずだ。 |