From 601b739f7594e8a9242249550d0f690d266cbfed Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:26:40 +1100 Subject: [PATCH] Add GPU selection to desktop installer (#1888) * Remove redundant code * Add GPU picker screen to installer * Permit jumping installation steps when visited * Prevent sad girl from covering buttons * Update gpu options to match availability * Ensure install screen renders inside bounds * Pre-select GPU detected by desktop native * Redesign GPU selection screen * Prevent text highlight on installer stepper * Add translations for GPU picker * Rename for clarity * Remove unused code * Update electron types * Update locales [skip ci] --------- Co-authored-by: huchenlei Co-authored-by: github-actions --- package-lock.json | 8 +- package.json | 2 +- public/assets/images/apple-mps-logo.png | Bin 0 -> 67332 bytes public/assets/images/manual-configuration.svg | 5 + public/assets/images/nvidia-logo.svg | 6 + src/components/install/GpuPicker.vue | 203 ++++++++++++++++++ src/locales/en/main.json | 19 +- src/locales/ja/main.json | 17 ++ src/locales/ko/main.json | 17 ++ src/locales/ru/main.json | 17 ++ src/locales/zh/main.json | 17 ++ src/utils/envUtil.ts | 3 + src/views/InstallView.vue | 79 +++++-- src/views/NotSupportedView.vue | 116 +++++----- 14 files changed, 441 insertions(+), 68 deletions(-) create mode 100644 public/assets/images/apple-mps-logo.png create mode 100644 public/assets/images/manual-configuration.svg create mode 100644 public/assets/images/nvidia-logo.svg create mode 100644 src/components/install/GpuPicker.vue diff --git a/package-lock.json b/package-lock.json index 4cae76174..5fd561b03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "GPL-3.0-only", "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.3.1", - "@comfyorg/comfyui-electron-types": "^0.3.32", + "@comfyorg/comfyui-electron-types": "^0.3.34", "@comfyorg/litegraph": "^0.8.46", "@primevue/themes": "^4.0.5", "@vueuse/core": "^11.0.0", @@ -1951,9 +1951,9 @@ "dev": true }, "node_modules/@comfyorg/comfyui-electron-types": { - "version": "0.3.32", - "resolved": "https://registry.npmjs.org/@comfyorg/comfyui-electron-types/-/comfyui-electron-types-0.3.32.tgz", - "integrity": "sha512-nftu7zFj1Xz6kOrZ+dcmYv+zF0KG23u2HmTOgTZh/Z5nJrC46raxHtHTlazER10cltUl2BozrE98+dWz3gDo3Q==", + "version": "0.3.34", + "resolved": "https://registry.npmjs.org/@comfyorg/comfyui-electron-types/-/comfyui-electron-types-0.3.34.tgz", + "integrity": "sha512-l4+llMrUh/nUxuBC1A1Zicu6EAZ74pDJPm14zQpyLleNeyj71FKIkgX/hIpbCegv5CwRgYXEdEN8FqTTKugf/A==", "license": "GPL-3.0-only" }, "node_modules/@comfyorg/litegraph": { diff --git a/package.json b/package.json index 43439699f..635e33939 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ }, "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.3.1", - "@comfyorg/comfyui-electron-types": "^0.3.32", + "@comfyorg/comfyui-electron-types": "^0.3.34", "@comfyorg/litegraph": "^0.8.46", "@primevue/themes": "^4.0.5", "@vueuse/core": "^11.0.0", diff --git a/public/assets/images/apple-mps-logo.png b/public/assets/images/apple-mps-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..261edbfd638fd82bc7e0971b528a01d91f800179 GIT binary patch literal 67332 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 WwrB%B;W$D70000 + + + + diff --git a/public/assets/images/nvidia-logo.svg b/public/assets/images/nvidia-logo.svg new file mode 100644 index 000000000..71f15b53b --- /dev/null +++ b/public/assets/images/nvidia-logo.svg @@ -0,0 +1,6 @@ + Artificial Intelligence Computing Leadership from NVIDIA + + + + + \ No newline at end of file diff --git a/src/components/install/GpuPicker.vue b/src/components/install/GpuPicker.vue new file mode 100644 index 000000000..57193b3d7 --- /dev/null +++ b/src/components/install/GpuPicker.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 664a6709e..eedefd36c 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -78,7 +78,8 @@ "file": "File", "inbox": "Inbox", "box": "Box", - "briefcase": "Briefcase" + "briefcase": "Briefcase", + "exclamation-triangle": "Warning" }, "welcome": { "title": "Welcome to ComfyUI", @@ -129,6 +130,22 @@ "migrationOptional": "Migration is optional. If you don't have an existing installation, you can skip this step.", "desktopAppSettings": "Desktop App Settings", "desktopAppSettingsDescription": "Configure how ComfyUI behaves on your desktop. You can change these settings later.", + "gpu": "GPU", + "gpuSelection": { + "selectGpu": "Select GPU", + "selectGpuDescription": "Select the type of GPU you have", + "cpuMode": "CPU Mode", + "cpuModeDescription": "CPU mode is intended for developers and rare edge cases only.", + "cpuModeDescription2": "If you are not absolutely certain you need this, please ignore this box and select your GPU above.", + "enableCpuMode": "Enable CPU Mode", + "nvidiaDescription": "NVIDIA devices are directly supported using pytorch CUDA builds.", + "mpsDescription": "Apple Metal Performance Shaders are supported using pytorch nightly.", + "customSkipsPython": "This option skips the normal python setup.", + "customComfyNeedsPython": "ComfyUI will not work until python is setup", + "customManualVenv": "Manually configure python venv", + "customInstallRequirements": "Install all requirements and dependencies (e.g. custom torch)", + "customMayNotWork": "This is entirely unsupported, and may simply not work" + }, "settings": { "autoUpdate": "Automatic Updates", "allowMetrics": "Crash Reports", diff --git a/src/locales/ja/main.json b/src/locales/ja/main.json index 9fb68fff2..19f0be1c4 100644 --- a/src/locales/ja/main.json +++ b/src/locales/ja/main.json @@ -141,6 +141,7 @@ "bookmark": "ブックマーク", "box": "ボックス", "briefcase": "ブリーフケース", + "exclamation-triangle": "警告", "file": "ファイル", "folder": "フォルダー", "heart": "ハート", @@ -157,6 +158,22 @@ "desktopAppSettingsDescription": "ComfyUIのデスクトップでの動作を設定します。これらの設定は後で変更可能です。", "desktopSettings": "デスクトップ設定", "failedToSelectDirectory": "ディレクトリの選択に失敗しました", + "gpu": "GPU", + "gpuSelection": { + "cpuMode": "CPUモード", + "cpuModeDescription": "CPUモードは開発者やまれなエッジケースのみを対象としています。", + "cpuModeDescription2": "これが絶対に必要であることが確定していない場合は、このボックスを無視して上でGPUを選択してください。", + "customComfyNeedsPython": "ComfyUIはpythonがセットアップされるまで動作しません", + "customInstallRequirements": "すべての要件と依存関係をインストールする(例:カスタムtorch)", + "customManualVenv": "python venvを手動で設定する", + "customMayNotWork": "これは完全にサポートされておらず、単純に動作しない場合があります。", + "customSkipsPython": "このオプションは通常のpythonセットアップをスキップします。", + "enableCpuMode": "CPUモードを有効にする", + "mpsDescription": "Apple Metal Performance Shadersは、pytorch nightlyを使用してサポートされています。", + "nvidiaDescription": "NVIDIAデバイスは、pytorch CUDAビルドを使用して直接サポートされています。", + "selectGpu": "GPUを選択", + "selectGpuDescription": "所有しているGPUのタイプを選択してください" + }, "installLocation": "インストール先", "installLocationDescription": "ComfyUIのユーザーデータを保存するディレクトリを選択してください。Python環境が選択した場所にインストールされます。選択したディスクに約15GBの空き容量が必要です。", "installLocationTooltip": "ComfyUIのユーザーデータディレクトリ。保存内容:\n- Python環境\n- モデル\n- カスタムノード\n", diff --git a/src/locales/ko/main.json b/src/locales/ko/main.json index 072d99ef5..2b8911971 100644 --- a/src/locales/ko/main.json +++ b/src/locales/ko/main.json @@ -141,6 +141,7 @@ "bookmark": "북마크", "box": "상자", "briefcase": "서류가방", + "exclamation-triangle": "경고", "file": "파일", "folder": "폴더", "heart": "하트", @@ -157,6 +158,22 @@ "desktopAppSettingsDescription": "ComfyUI가 데스크탑에서 어떻게 작동하는지 구성하세요. 이 설정은 나중에 변경할 수 있습니다.", "desktopSettings": "데스크탑 설정", "failedToSelectDirectory": "디렉토리 선택 실패", + "gpu": "GPU", + "gpuSelection": { + "cpuMode": "CPU 모드", + "cpuModeDescription": "CPU 모드는 개발자와 드문 경우에만 사용됩니다.", + "cpuModeDescription2": "이것이 필요한지 확실하지 않다면, 이 상자를 무시하고 위에서 GPU를 선택하세요.", + "customComfyNeedsPython": "파이썬이 설정되지 않으면 ComfyUI가 작동하지 않습니다", + "customInstallRequirements": "모든 요구 사항과 종속성 설치 (예: 사용자 정의 torch)", + "customManualVenv": "파이썬 venv를 수동으로 구성", + "customMayNotWork": "이것은 전혀 지원되지 않으며, 작동하지 않을 수 있습니다", + "customSkipsPython": "이 옵션은 일반 파이썬 설정을 건너뜁니다.", + "enableCpuMode": "CPU 모드 활성화", + "mpsDescription": "Apple Metal Performance Shaders는 pytorch nightly를 사용하여 지원됩니다.", + "nvidiaDescription": "NVIDIA 장치는 pytorch CUDA 빌드를 사용하여 직접 지원됩니다.", + "selectGpu": "GPU 선택", + "selectGpuDescription": "소유한 GPU 유형을 선택하세요" + }, "installLocation": "설치 위치", "installLocationDescription": "ComfyUI의 사용자 데이터 디렉토리를 선택하십시오. 선택한 위치에 Python 환경이 설치됩니다. 선택한 디스크에 충분한 공간(~15GB)이 남아 있는지 확인하십시오.", "installLocationTooltip": "ComfyUI의 사용자 데이터 디렉토리. 저장소:\n- Python 환경\n- 모델\n- 사용자 정의 노드\n", diff --git a/src/locales/ru/main.json b/src/locales/ru/main.json index 7b25a7b7b..3c58d854c 100644 --- a/src/locales/ru/main.json +++ b/src/locales/ru/main.json @@ -141,6 +141,7 @@ "bookmark": "Закладка", "box": "Коробка", "briefcase": "Портфель", + "exclamation-triangle": "Предупреждение", "file": "Файл", "folder": "Папка", "heart": "Сердце", @@ -157,6 +158,22 @@ "desktopAppSettingsDescription": "Настройте, как ComfyUI ведет себя на вашем рабочем столе. Вы можете изменить эти настройки позже.", "desktopSettings": "Настройки рабочего стола", "failedToSelectDirectory": "Не удалось выбрать директорию", + "gpu": "GPU", + "gpuSelection": { + "cpuMode": "Режим CPU", + "cpuModeDescription": "Режим CPU предназначен только для разработчиков и редких крайних случаев.", + "cpuModeDescription2": "Если вы не абсолютно уверены, что вам это нужно, пожалуйста, проигнорируйте эту галочку и выберите ваш GPU выше.", + "customComfyNeedsPython": "ComfyUI не будет работать, пока python не будет настроен", + "customInstallRequirements": "Установите все требования и зависимости (например, custom torch)", + "customManualVenv": "Вручную настроить python venv", + "customMayNotWork": "Это полностью не поддерживается и может просто не работать", + "customSkipsPython": "Этот вариант пропускает обычную настройку python.", + "enableCpuMode": "Включить режим CPU", + "mpsDescription": "Поддерживаются Apple Metal Performance Shaders с использованием pytorch nightly.", + "nvidiaDescription": "Устройства NVIDIA напрямую поддерживаются с использованием сборок pytorch CUDA.", + "selectGpu": "Выберите GPU", + "selectGpuDescription": "Выберите тип GPU, который у вас есть" + }, "installLocation": "Место установки", "installLocationDescription": "Выберите директорию для пользовательских данных ComfyUI. В выбранном месте будет установлена среда Python. Пожалуйста, убедитесь, что на выбранном диске достаточно места (~15 ГБ).", "installLocationTooltip": "Директория пользовательских данных ComfyUI. Хранит:\n- Среда Python\n- Модели\n- Пользовательские узлы\n", diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index 4ff8b617a..ecd62834e 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -141,6 +141,7 @@ "bookmark": "书签", "box": "盒子", "briefcase": "公文包", + "exclamation-triangle": "警告", "file": "文件", "folder": "文件夹", "heart": "心", @@ -157,6 +158,22 @@ "desktopAppSettingsDescription": "配置 ComfyUI 在桌面上的行为。您可以稍后更改这些设置。", "desktopSettings": "桌面设置", "failedToSelectDirectory": "选择目录失败", + "gpu": "GPU", + "gpuSelection": { + "cpuMode": "CPU 模式", + "cpuModeDescription": "CPU 模式仅适用于开发者和极少数特殊情况。", + "cpuModeDescription2": "如果你不完全确定你需要这个,请忽略这个选项并在上面选择你的 GPU。", + "customComfyNeedsPython": "在 python 设置之前,ComfyUI 将无法工作", + "customInstallRequirements": "安装所有需求和依赖项(例如:自定义 torch)", + "customManualVenv": "手动配置 python venv", + "customMayNotWork": "这完全不受支持,可能根本无法工作", + "customSkipsPython": "此选项跳过正常的 python 设置。", + "enableCpuMode": "启用 CPU 模式", + "mpsDescription": "Apple Metal Performance Shaders 使用 pytorch nightly 支持。", + "nvidiaDescription": "NVIDIA 设备直接支持使用 pytorch CUDA 构建。", + "selectGpu": "选择 GPU", + "selectGpuDescription": "选择你拥有的 GPU 类型" + }, "installLocation": "安装位置", "installLocationDescription": "选择 ComfyUI 用户数据的目录。将安装一个 Python 环境到所选位置。请确保所选磁盘有足够的空间(约 15GB)。", "installLocationTooltip": "ComfyUI 的用户数据目录。存储:\n- Python 环境\n- 模型\n- 自定义节点\n", diff --git a/src/utils/envUtil.ts b/src/utils/envUtil.ts index d68f72fea..6a8fd6fa0 100644 --- a/src/utils/envUtil.ts +++ b/src/utils/envUtil.ts @@ -1,5 +1,8 @@ import { ElectronAPI } from '@comfyorg/comfyui-electron-types' +export type InstallOptions = Parameters[0] +export type TorchDeviceType = InstallOptions['device'] + export function isElectron() { return 'electronAPI' in window && window['electronAPI'] !== undefined } diff --git a/src/views/InstallView.vue b/src/views/InstallView.vue index c992667b3..94bb680a3 100644 --- a/src/views/InstallView.vue +++ b/src/views/InstallView.vue @@ -2,25 +2,46 @@

- - - + + + + {{ $t('install.gpu') }} + + {{ $t('install.installLocation') }} - + {{ $t('install.migration') }} - + {{ $t('install.desktopSettings') }} + + +
+
+
-
+
+