2025-02-07 01:06:42
This commit is contained in:
parent
5ccf97cdfe
commit
3b7e49851c
123
article/tech/comfyui-on-nixos.md
Normal file
123
article/tech/comfyui-on-nixos.md
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
---
|
||||||
|
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も許されるはずだ。
|
Loading…
Reference in New Issue
Block a user