現在のPC構成

No. CPU Chipset RAM GPU VRAM OS
1 RYZEN 9 9950X3D X870E DDR5 64GB RADEON RX 9070XT 16GB Windows 11 Pro
2 RYZEN 9 5900XT B550 DDR4 64GB RADEON RX 6750XT 12GB Windows 11 Pro
3 RYZEN 7 5800X B550 DDR4 32GB RADEON RX 5700XT 8GB Windows 11 Pro
4 RYZEN 7 3700X X570 DDR4 32GB GeForce GTX 1050 Ti 4GB TrueNAS Community
5 RYZEN 7 1700 X370 DDR4 32GB GeForce GTX 1060 6GB  
  1. メインPC。主に写真編集とComfyUIによる画像生成と編集、そしてゲーム。

  2. 甥っ子のゲーミングPC。

  3. サブPC。

  4. TrueNASという名のファイルサーバー。メインPCのデータバックアップ。

  5. ストレージが無いので余りパーツ。

入替作業

5.と4.の中身を入れ替え、RYZEN 7 3700XマシンにTrueNAS Communityのストレージとすべて搭載して、BIOSの設定でXMP2 3600MHzCL18を設定して、Global C State Controlを無効にしただけで、すべて移行できました。2つのオンボードNICだったGIGABYTE GA-AX370 Gaming K7をASUS ROG STRIX X570-F GamingとRealTekのPCI-E NICに交換したんですが、各NICのPCI-Eレーンの搭載番号が偶然一致して、ネットワーク設定も何も設定せずにそのまま移行できました。普通は新しく認識したNICにIPアドレスを振り直すんですよ。普通なら。

5.のマシンでは、急負荷の後、時々TrueNASがハングアップしてしまうことがあったんですが、4.の構成では今のところ安定しているようです。まあ今日入れ替えたばかりなので暫く様子見ですね。

サブ機の用途を検討中

3.のサブ機ですが、RADEON RX 5700XT 8GBというゲームにはまだ現役、AIではROCmでは制限が多くてDirectMLじゃないと動かせないので、メインPCでComfyUIで画像生成中にGPUの負荷が別に必要なときに生成画像の修正などに使おうかと思っています。っていうか、AI以外のメインPCの作業環境をまるごと再現しようかな。

春の農作業を始めました。

種籾の芽出し、苗箱の準備です。

今年は500箱ほど準備する予定です。

例年よりは50箱多いです。

今年は苗の価格も上昇しました。

決算月で卸売り業者が米の卸売り価格を安くしても、生産者側のコストが上がっているので今年も米の買付価格は下がりません。

また昨年同様に7月、8月に需要より供給量が25万トン少ないので米不足に陥るので今年の夏の販売価格は昨年より上がるでしょう。

今年は備蓄米が無いから覚悟しておきましょう。

消費者も卸売業者も農家を馬鹿にするなって話ですよ。

CUIの方が好きなようだ

1. Git版 ComfyUI with ROCm7.2を使う理由

デスクトップ版のComfyUIも正式にROCm7.2に対応しているのにもかかわらず、敢えてGit版のComfyUIを使っているのは、単にCUIが好きだからっていうのもあるけど、デスクトップ版にはElectronが組み込まれて居るらしいけれどGPUアクセラレーションを無効にできないので、GPUアクセラレーションを使用しないGoogle Chromeと連携できること、ComfyUIの起動オプションや環境変数を細かく設定できること、outputフォルダを日付で作成して分類できることなどが理由です。

2. 設定しているバッチファイル

1_ComfyUI_update.bat

D:
cd D:\ComfyUI
git pull
pip install -r requirements.txt

2_ComfyUI_date.bat

@echo off
setlocal

rem PowerShellを使って確実に yyyyMMdd を取得(ロケールに左右されません)
for /f "usebackq" %%i in (`powershell -NoProfile -Command "Get-Date -Format 'yyyyMMdd'"`) do set yyyymmdd=%%i

rem Get the Output path
set parentPath=H:\output

rem Create the folder with the name yyyymmdd
set outpath=%parentPath%\%yyyymmdd%

:: システムのPythonやライブラリを無視させる
set PYTHONNOUSERSITE=1
set PYTHONPATH=
:: このアプリ専用のPythonとROCmのパスを最優先にする
set PATH=%~dp0python_embeded;%~dp0python_embeded\Scripts;%PATH%

rem --- ROCm / PyTorch 最適化設定 ---
SET PYTORCH_HIP_ALLOC_CONF=garbage_collection_threshold:0.6
SET PYTORCH_HIP_ALLOC_CONF=expandable_segments:True
SET ROCM_ENABLE_PREFETCH=1

rem フォルダが存在しない場合のみ作成
if not exist "%outpath%" mkdir "%outpath%"

echo Target path: %outpath%

D:
cd D:\ComfyUI

python main.py --output-directory %outpath% --preview-method none --reserve-vram 0.0 --cache-lru 8 --use-pytorch-cross-attention
endlocal

Google Chrome ショートカットファイル

リンク先:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --app=http://127.0.0.1:8188 --user-data-dir="D:\ChromeData\App8188" --disable-gpu --disable-software-rasterizer --disk-cache-size=1 --media-cache-size=1

作業フォルダー:

"C:\Program Files\Google\Chrome\Application"
オプション 説明
–app=http://127.0.0.1:8188 http://127.0.0.1:8188 をWebアプリとして開く。
–user-data-dir=“D:\ChromeData\App8188” 上記のWebアプリとして開いた場合にユーザーデータを指定の"D:\ChromeData\App8188" フォルダに保存する。通常のブラウザの状態には影響しない。このオプションだけ指定してワークフローのJSONのダウンロード先を一度設定しておいてから、再びすべてのオプションを設定する。
–disable-gpu GPUアクセラレーションを使用しない。
–disable-software-rasterizer ソフトウェアラスタライザーを使用しない。
–disk-cache-size=1 ディスクキャッシュサイズを1にする。
–media-cache-size=1 メディアキャッシュサイズを1にする。

ギリギリまでGPUリソースを削って、ComfyUIの動作を優先させる設定を施しているわけです。

3. 使いやすく出来ないか?

とは言え毎回コマンドプロンプトからコマンドを入力しているわけではありません。上記のバッチファイルに必要な必要な事項を記述して、それのショートカットをデスクトップに置いてダブルクリックして実行しているのです。しかし、バッチファイルがデスクトップに散らかるのも嫌だし、他にバックアップコマンドやGitPageの更新コマンドなども増えてきたので、整理することにしました。

DocumentフォルダにCommandフォルダを作成して、これまで作ったいくつものバッチファイルを保存しました。すべて絶対パスを記述しているので、どこから実行しても必ず起動できます。ショートカットをいくつもクリックしていくのも間違えやすいのでバッチファイルで起動メニューを作ってみました。

menu_For_ComfyUI.bat

@echo off
REM ----- ComfyUI Menu Batch
 
:TOP
 
echo *****************************************************************
echo * ComfyUI                                                       *
echo *                                                               *
echo *   1:Update                                                    *
echo *   2:Start_with_Output_Date_Folder                             *
echo *     with Google Chrome http://127.0.0.1:8188                  *
echo *   9:Exit                                                      *
echo *                                                               *
echo *****************************************************************
 
:MENUSTART
 
set USR_INPUT_STR=
set /P USR_INPUT_STR="Input Number => "
 
if %USR_INPUT_STR%==1 (
  goto EXECUTE_1
) else if %USR_INPUT_STR%==2 (
  goto EXECUTE_2
) else if %USR_INPUT_STR%==9 (
  goto EXITTRAP
) else (
  echo Not Exist Number!
  echo.
  goto MENUSTART
)
 
REM ComfyUI Update
:EXECUTE_1
call E:\Document\Command\1_ComfyUI\1_ComfyUI_update.bat
cls
goto TOP
 
REM ComfyUI Start
:EXECUTE_2
start E:\Document\Command\1_ComfyUI\2_ComfyUI_date.bat
timeout /t 10 /nobreak
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" --app=http://127.0.0.1:8188 --user-data-dir="D:\ChromeData\App8188" --disable-gpu --disable-software-rasterizer --disk-cache-size=1 --media-cache-size=1

cls
goto TOP
 
:EXITTRAP
echo.
echo Exit

上記のバッチファイルを起動するショートカットをデスクトップに作成して起動すると下のようなコマンド画面が表示されます。とてもシンプルなメニュー画面が出来ました。肝は:EXECUTE_2で記述してある部分で、ComfyUIを起動させてサーバーが立ち上がるくらい待ってからGoogle Chromeを起動しているところでしょうか。callとstartの使い方はGeminiに教わりました。

*****************************************************************
* ComfyUI                                                       *
*                                                               *
*   1:Update                                                    *
*   2:Start_with_Output_Date_Folder                             *
*     with Google Chrome http://127.0.0.1:8188                  *
*   9:Exit                                                      *
*                                                               *
*****************************************************************
Input Number => 

最後に

コンピューターを使っているって感じがあって、こんなシンプルなCUIの画面の方が好きなみたいだwww