fix(ai): improve GPU capability hints and separate engine logs (#14263)

This commit is contained in:
ssongliu
2026-11-01 01:06:37 +08:00
committed by GitHub
parent 93ebc6a8b9
commit 7f4c503982
14 changed files with 52 additions and 17 deletions
+1 -1
View File
@@ -1052,7 +1052,7 @@ const message = {
gpuCountRequired: 'Enter an integer greater than 0',
gpuDevices: 'GPU devices',
gpuCapabilitiesHelper:
'GPU access is required; enable monitoring and management (utility) and computing support (compute) as needed.',
'Configure NVIDIA GPU capabilities for the container. Keeping the default options is generally recommended.\n• gpu: Allows the container to access the GPU. Required.\n• utility: Supports GPU status queries and monitoring, such as nvidia-smi.\n• compute: Supports GPU computing, including CUDA. Usually needed for model inference.',
gpuSelectRequired: 'Select at least one available GPU device.',
gpuUnsupported: 'Unsupported',
gpuNotDetected: 'No supported accelerators detected',
+1 -1
View File
@@ -1054,7 +1054,7 @@ const message = {
gpuCountRequired: 'Introduzca un entero mayor que 0',
gpuDevices: 'Dispositivos GPU',
gpuCapabilitiesHelper:
'El acceso a la GPU es obligatorio; active la supervisión y gestión (utility) y el cálculo (compute) según sea necesario.',
'Configure las capacidades de NVIDIA GPU del contenedor. Se recomienda mantener las opciones predeterminadas.\n• gpu: Permite al contenedor acceder a la GPU. Obligatorio.\n• utility: Permite consultar y supervisar el estado de la GPU, por ejemplo, con nvidia-smi.\n• compute: Permite realizar cálculos en la GPU, como CUDA. Suele ser necesario para la inferencia de modelos.',
gpuSelectRequired: 'Seleccione al menos un dispositivo GPU disponible.',
gpuUnsupported: 'No compatible',
gpuNotDetected: 'No se detectaron aceleradores compatibles',
+1 -1
View File
@@ -1035,7 +1035,7 @@ const message = {
gpuCountRequired: 'یک عدد صحیح بزرگ‌تر از صفر وارد کنید',
gpuDevices: 'دستگاه‌های GPU',
gpuCapabilitiesHelper:
'دسترسی به GPU الزامی است؛ نظارت و مدیریت (utility) و پشتیبانی محاسباتی (compute) را در صورت نیاز فعال کنید.',
'قابلیت‌های NVIDIA GPU را برای کانتینر تنظیم کنید. معمولاً توصیه می‌شود گزینه‌های پیش‌فرض را حفظ کنید.\n• gpu: دسترسی کانتینر به GPU را مجاز می‌کند. انتخاب آن الزامی است.\n• utility: از بررسی وضعیت و پایش GPU، مانند nvidia-smi، پشتیبانی می‌کند.\n• compute: از محاسبات GPU، از جمله CUDA، پشتیبانی می‌کند. معمولاً برای استنتاج مدل لازم است.',
gpuSelectRequired: 'حداقل یک دستگاه GPU موجود را انتخاب کنید.',
gpuUnsupported: 'پشتیبانی نمی‌شود',
gpuNotDetected: 'هیچ شتاب‌دهنده پشتیبانی‌شده‌ای شناسایی نشد',
+1 -1
View File
@@ -1039,7 +1039,7 @@ const message = {
gpuCountRequired: '0 より大きい整数を入力してください',
gpuDevices: 'GPU デバイス',
gpuCapabilitiesHelper:
'GPU アクセスは必須です。必要に応じて監視と管理(utility)や計算サポート(compute)を有効にしてください。',
'コンテナーで使用する NVIDIA GPU の機能を設定します。通常は既定の設定を維持することを推奨します。\n• gpu:コンテナーによる GPU へのアクセスを許可します。必須です。\n• utility:nvidia-smi などによる GPU の状態確認と監視をサポートします。\n• compute:CUDA などの GPU 計算をサポートします。通常、モデル推論に必要です。',
gpuSelectRequired: '使用可能な GPU を少なくとも 1 つ選択してください。',
gpuUnsupported: '非対応',
gpuNotDetected: '対応するアクセラレーターが検出されませんでした',
+1 -1
View File
@@ -1029,7 +1029,7 @@ const message = {
gpuCountRequired: '0보다 큰 정수를 입력하세요',
gpuDevices: 'GPU 장치',
gpuCapabilitiesHelper:
'GPU 접근은 필수이며, 필요에 따라 모니터링 및 관리(utility)와 연산 지원(compute)을 활성화할 수 있습니다.',
'컨테이너에서 사용할 NVIDIA GPU 기능을 설정합니다. 일반적으로 기본 옵션을 유지하는 것이 좋습니다.\n• gpu: 컨테이너의 GPU 접근을 허용합니다. 필수 항목입니다.\n• utility: nvidia-smi 등을 통한 GPU 상태 조회 및 모니터링을 지원합니다.\n• compute: CUDA 등의 GPU 연산을 지원합니다. 일반적으로 모델 추론에 필요합니다.',
gpuSelectRequired: '사용 가능한 GPU 장치를 하나 이상 선택하세요.',
gpuUnsupported: '지원 안 됨',
gpuNotDetected: '지원되는 가속기가 감지되지 않았습니다',
+1 -1
View File
@@ -1026,7 +1026,7 @@ const message = {
gpuCountRequired: 'ກະລຸນາປ້ອນຈຳນວນເຕັມທີ່ຫຼາຍກວ່າ 0',
gpuDevices: 'ອຸປະກອນ GPU',
gpuCapabilitiesHelper:
'ຕ້ອງເປີດການເຂົ້າເຖິງ GPU ແລະ ສາມາດເປີດການຕິດຕາມແລະຈັດການ (utility) ແລະ ການຄຳນວນ (compute) ໄດ້ຕາມຕ້ອງການ.',
'ຕັ້ງຄ່າຄວາມສາມາດ NVIDIA GPU ສຳລັບຄອນເທນເນີ. ໂດຍທົ່ວໄປແນະນຳໃຫ້ຮັກສາຕົວເລືອກເລີ່ມຕົ້ນ.\n• gpu: ອະນຸຍາດໃຫ້ຄອນເທນເນີເຂົ້າເຖິງ GPU. ຈຳເປັນຕ້ອງເລືອກ.\n• utility: ຮອງຮັບການກວດສອບແລະຕິດຕາມສະຖານະ GPU ເຊັ່ນ nvidia-smi.\n• compute: ຮອງຮັບການຄຳນວນດ້ວຍ GPU ເຊັ່ນ CUDA. ໂດຍທົ່ວໄປຈຳເປັນສຳລັບການອະນຸມານຂອງໂມເດວ.',
gpuSelectRequired: 'ກະລຸນາເລືອກ GPU ທີ່ພ້ອມໃຊ້ຢ່າງໜ້ອຍໜຶ່ງອຸປະກອນ',
gpuUnsupported: 'ບໍ່ຮອງຮັບ',
gpuNotDetected: 'ບໍ່ພົບຕົວເລັ່ງທີ່ຮອງຮັບ',
+1 -1
View File
@@ -1062,7 +1062,7 @@ const message = {
gpuCountRequired: 'Masukkan integer yang lebih besar daripada 0',
gpuDevices: 'Peranti GPU',
gpuCapabilitiesHelper:
'Akses GPU diperlukan; dayakan pemantauan dan pengurusan (utility) serta sokongan pengiraan (compute) mengikut keperluan.',
'Konfigurasikan keupayaan NVIDIA GPU untuk bekas. Biasanya disyorkan untuk mengekalkan pilihan lalai.\n• gpu: Membenarkan bekas mengakses GPU. Wajib dipilih.\n• utility: Menyokong semakan status dan pemantauan GPU, seperti nvidia-smi.\n• compute: Menyokong pengiraan GPU, termasuk CUDA. Biasanya diperlukan untuk inferens model.',
gpuSelectRequired: 'Pilih sekurang-kurangnya satu peranti GPU yang tersedia.',
gpuUnsupported: 'Tidak disokong',
gpuNotDetected: 'Tiada pemecut yang disokong dikesan',
+1 -1
View File
@@ -1058,7 +1058,7 @@ const message = {
gpuCountRequired: 'Insira um número inteiro maior que 0',
gpuDevices: 'Dispositivos GPU',
gpuCapabilitiesHelper:
'O acesso à GPU é obrigatório; habilite o monitoramento e gerenciamento (utility) e o suporte a cálculos (compute) conforme necessário.',
'Configure os recursos da NVIDIA GPU para o contêiner. Em geral, recomenda-se manter as opções padrão.\n• gpu: Permite que o contêiner acesse a GPU. Obrigatório.\n• utility: Permite consultar e monitorar o estado da GPU, por exemplo, com nvidia-smi.\n• compute: Permite cálculos na GPU, incluindo CUDA. Geralmente necessário para a inferência de modelos.',
gpuSelectRequired: 'Selecione pelo menos um dispositivo GPU disponível.',
gpuUnsupported: 'Não suportado',
gpuNotDetected: 'Nenhum acelerador compatível detectado',
+1 -1
View File
@@ -1051,7 +1051,7 @@ const message = {
gpuCountRequired: 'Введите целое число больше 0',
gpuDevices: 'Устройства GPU',
gpuCapabilitiesHelper:
'Доступ к GPU обязателен; при необходимости включите мониторинг и управление (utility) и поддержку вычислений (compute).',
'Настройте возможности NVIDIA GPU для контейнера. Обычно рекомендуется сохранить параметры по умолчанию.\n• gpu: Разрешает контейнеру доступ к GPU. Обязательный параметр.\n• utility: Обеспечивает запрос состояния и мониторинг GPU, например через nvidia-smi.\n• compute: Обеспечивает вычисления на GPU, включая CUDA. Обычно требуется для выполнения моделей.',
gpuSelectRequired: 'Выберите хотя бы одно доступное устройство GPU.',
gpuUnsupported: 'Не поддерживается',
gpuNotDetected: 'Поддерживаемые ускорители не обнаружены',
+1 -1
View File
@@ -1060,7 +1060,7 @@ const message = {
gpuCountRequired: '0’dan büyük bir tam sayı girin',
gpuDevices: 'GPU aygıtları',
gpuCapabilitiesHelper:
'GPU erişimi zorunludur; izleme ve yönetimi (utility) ve hesaplama desteğini (compute) gerektiğinde etkinleştirin.',
'Kapsayıcı için NVIDIA GPU yeteneklerini yapılandırın. Genellikle varsayılan seçenekleri korumanız önerilir.\n• gpu: Kapsayıcının GPU erişimine izin verir. Zorunludur.\n• utility: nvidia-smi gibi araçlarla GPU durum sorgularını ve izlemeyi destekler.\n• compute: CUDA dahil GPU hesaplamalarını destekler. Genellikle model çıkarımı için gereklidir.',
gpuSelectRequired: 'En az bir kullanılabilir GPU aygıtı seçin.',
gpuUnsupported: 'Desteklenmiyor',
gpuNotDetected: 'Desteklenen hızlandırıcı algılanmadı',
+2 -1
View File
@@ -989,7 +989,8 @@ const message = {
gpuSpecificHelper: '手動選擇特定加速卡。',
gpuCountRequired: '請輸入大於 0 的整數',
gpuDevices: 'GPU 裝置',
gpuCapabilitiesHelper: 'GPU 存取為必選項,可依需求啟用監控管理(utility)和運算支援(compute)。',
gpuCapabilitiesHelper:
'設定容器使用 NVIDIA GPU 的能力,通常建議保留預設選項。\n• gpu:允許容器存取 GPU,必選。\n• utility:支援 GPU 狀態查詢和監控,例如 nvidia-smi。\n• compute:支援 CUDA 等 GPU 運算,模型推論通常需要啟用。',
gpuSelectRequired: '請選擇至少一個目前可用的 GPU 裝置',
gpuUnsupported: '不支援',
gpuNotDetected: '未偵測到可用加速卡',
+2 -1
View File
@@ -1002,7 +1002,8 @@ const message = {
gpuSpecificHelper: '手动选择具体加速卡。',
gpuCountRequired: '请输入大于 0 的整数',
gpuDevices: 'GPU 设备',
gpuCapabilitiesHelper: 'GPU 访问为必选项,可按需启用监控管理(utility)和计算支持(compute)。',
gpuCapabilitiesHelper:
'配置容器使用 NVIDIA GPU 的能力,通常建议保留默认选项。\n• gpu:允许容器访问 GPU,必选。\n• utility:支持 GPU 状态查询和监控,例如 nvidia-smi。\n• compute:支持 CUDA 等 GPU 计算,模型推理通常需要启用。',
gpuSelectRequired: '请选择至少一个当前可用的 GPU 设备',
gpuUnsupported: '不支持',
gpuNotDetected: '未检测到可用加速卡',
@@ -104,12 +104,26 @@
</el-select>
</el-form-item>
<el-form-item v-if="imageType === 'nvidia'" label="Capabilities" prop="gpu.capabilities">
<template #label>
<span class="gpu-capabilities-label">
Capabilities
<el-tooltip placement="top">
<template #content>
<div class="gpu-capabilities-help">
{{ $t('aiTools.model.gpuCapabilitiesHelper') }}
</div>
</template>
<el-icon tabindex="0" :aria-label="$t('aiTools.model.gpuCapabilitiesHelper')">
<InfoFilled />
</el-icon>
</el-tooltip>
</span>
</template>
<el-checkbox-group v-model="model.capabilities">
<el-checkbox value="gpu" disabled>gpu</el-checkbox>
<el-checkbox value="utility">utility</el-checkbox>
<el-checkbox value="compute">compute</el-checkbox>
</el-checkbox-group>
<span class="input-help">{{ $t('aiTools.model.gpuCapabilitiesHelper') }}</span>
</el-form-item>
</template>
<span v-if="selectingDevices && gpuWarnings.length" class="input-help">{{ gpuWarnings.join('; ') }}</span>
@@ -119,6 +133,7 @@
<script setup lang="ts">
import { computed, ref } from 'vue';
import { InfoFilled } from '@element-plus/icons-vue';
import { AI } from '@/api/interface/ai';
import { loadModelGPUDevices } from '@/api/modules/ai';
import i18n from '@/lang';
@@ -244,6 +259,21 @@ defineExpose({ init, loading });
<style lang="scss" scoped>
@use '@/views/ai/model/components/form-section.scss';
.gpu-capabilities-label {
display: inline-flex;
align-items: flex-start;
gap: 4px;
.el-icon {
font-size: 12px;
color: var(--el-text-color-secondary);
cursor: help;
}
}
.gpu-capabilities-help {
max-width: 360px;
white-space: pre-line;
}
:global(.model-gpu-device-select .el-select-dropdown__item.is-selected::after) {
display: none;
}
+7 -4
View File
@@ -276,6 +276,13 @@
</el-dropdown>
</template>
</el-table-column>
<el-table-column :label="$t('commons.button.log')" min-width="90">
<template #default="{ row }">
<el-button @click="manageRef.open(row, 'log', true)" link type="primary">
{{ $t('website.check') }}
</el-button>
</template>
</el-table-column>
<el-table-column :label="$t('container.source')" min-width="170">
<template #default="{ row }">
<template v-if="row.status === 'Running' && row.containerName">
@@ -667,10 +674,6 @@ const deploymentButtons = [
disabled: operationDisabled,
click: (row: Deployment) => syncRef.value.open(row),
},
{
label: i18n.global.t('commons.button.log'),
click: (row: Deployment) => manageRef.value.open(row, 'log', true),
},
{
label: i18n.global.t('commons.button.delete'),
permission: true,