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