From 66e9862cbaf2c57e9d8bbacbee2106123a151eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=B4=BA?= Date: Fri, 6 Nov 2026 15:57:34 +0800 Subject: [PATCH] feat(ai): add benchmark setup guidance and image pull navigation (#14318) --- frontend/src/lang/modules/en.ts | 49 +++++++++++ frontend/src/lang/modules/es-es.ts | 55 ++++++++++++ frontend/src/lang/modules/fa.ts | 50 +++++++++++ frontend/src/lang/modules/ja.ts | 53 +++++++++++ frontend/src/lang/modules/ko.ts | 51 +++++++++++ frontend/src/lang/modules/lo.ts | 44 ++++++++++ frontend/src/lang/modules/ms.ts | 54 ++++++++++++ frontend/src/lang/modules/pt-br.ts | 55 ++++++++++++ frontend/src/lang/modules/ru.ts | 52 +++++++++++ frontend/src/lang/modules/tr.ts | 51 +++++++++++ frontend/src/lang/modules/zh-Hant.ts | 41 +++++++++ frontend/src/lang/modules/zh.ts | 41 +++++++++ frontend/src/views/container/image/index.vue | 92 ++++++++++++++++++-- 13 files changed, 683 insertions(+), 5 deletions(-) diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 641610668..3e1d354d2 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1636,6 +1636,8 @@ const message = { }, benchmark: { title: 'Benchmark', + description: + 'Benchmark model services across different request lengths and concurrency settings to evaluate metrics such as throughput, time to first token, and request latency.', launchCommand: 'Launch Command', retest: 'Retest', statusRunning: 'Running', @@ -2108,6 +2110,9 @@ const message = { 'Multiple scenarios, concurrency levels and repeated runs, including long inputs and shared prefixes.', customDescription: 'Start with one scenario, set its parameters and add more as needed.', scenarios: 'Scenarios', + scenarioCount: 'Scenarios ({count} total)', + scenarioHelp: + 'Each scenario defines input/output tokens, concurrency levels and request parameters. Concurrency levels are tested in sequence; each level runs for the configured number of trials, and each run creates one test point.', builtIn: 'Built-in', builtInHelp: 'Built-in schemes cannot be edited or deleted. Adjust a copy when creating a test.', modified: 'Modified', @@ -2147,6 +2152,50 @@ const message = { resultHelp: 'Only successful runs without request anomalies enter the median and min/max summaries. P99 is the median of per-run P99 values. Cache and external traffic are uncontrolled.', }, + benchmarkSettings: { + settingsHelp: 'Prepare the Benchmark image and a test scheme. You can create a benchmark once both are ready.', + imageAvailable: 'Benchmark image is ready ({image})', + imageUnavailable: 'Benchmark image was not found ({image})', + retestServiceHelp: + 'Retests keep the task parameters. Confirm the current model service; credentials are loaded from the selected service.', + prepareHelp: 'Before creating a benchmark, prepare the Benchmark image and test schemes in {settings}.', + image: 'Benchmark image', + ready: 'Ready', + unconfigured: 'Not configured', + checkFailed: 'Check failed', + imageMissing: 'The required image was not found. Pull {image} in image management.', + imageReady: 'The Benchmark image is ready for creating tests.', + imageHelp: 'The Benchmark image runs the load test client and sends requests to the selected model service.', + mainNodeHelp: 'Benchmarks run on the main node. Prepare the image and tokenizer on that node.', + goImages: 'Go to image management', + goModels: 'Go to model downloads', + tokenizerHelp: + 'Tokenizers encode test text and count tokens. Select a model with valid tokenizer files from the default model directory.', + tokenizerEmpty: 'No models are available. Download a model containing tokenizer files in model downloads.', + tokenizerEmptyWithDownload: + 'No models are available. Open {download} to download a model containing tokenizer files.', + tokenizerInvalid: + 'This model has no usable tokenizer. Select another model or prepare its files in model downloads.', + schemeHelp: + 'Test schemes define request parameters, concurrency, and execution rules. Prepare at least one available scheme.', + schemeEmpty: 'No test schemes are available. Create a scheme first.', + manageSchemes: 'Manage test schemes', + selectService: 'Select a model service', + serviceHelp: + 'Select a model service to benchmark. Requests will be sent to this service; make sure it is reachable.', + noServices: 'No model services are available. Add a model service first.', + goModelServices: 'Go to model services', + unsupportedServices: 'Unsupported services are disabled. Hover over an option for the reason.', + unsupportedProtocol: + 'This API protocol is not supported: {0}. Select a model service using OpenAI Chat Completions.', + unsupportedAuth: + 'This authentication method is not supported: {0}. Select a service using Bearer authentication.', + serviceModelsMissing: 'This service has no configured models. Add models in model service management.', + prerequisitesTitle: 'Complete benchmark settings first', + prerequisitesMissing: 'The following prerequisites are not ready: {0}. Complete them in settings.', + precheckFailed: 'Could not check benchmark prerequisites. Open settings and check again.', + goSettings: 'Go to settings', + }, benchmarkOverview: { comparison: 'Scenario and concurrency comparison', comparisonHelp: 'Click a scenario name to inspect that combination.', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index b223bf177..d590b59fb 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -1645,6 +1645,8 @@ const message = { }, benchmark: { title: 'Benchmark', + description: + 'Realice pruebas de rendimiento de los servicios de modelos con distintas longitudes de solicitud y configuraciones de concurrencia para medir métricas como el rendimiento, el tiempo hasta el primer token y la latencia de las solicitudes.', launchCommand: 'Comando de inicio', retest: 'Volver a probar', statusRunning: 'En ejecución', @@ -2129,6 +2131,9 @@ const message = { 'Varios escenarios, niveles de concurrencia y repeticiones, con entradas largas y prefijos compartidos.', customDescription: 'Empiece con un escenario, configure sus parámetros y añada más según necesite.', scenarios: 'Escenarios', + scenarioCount: 'Escenarios ({count} en total)', + scenarioHelp: + 'Cada escenario define los tokens de entrada/salida, los niveles de concurrencia y los parámetros de las solicitudes. Los niveles se prueban en secuencia; cada nivel se ejecuta según el número de repeticiones configurado y cada ejecución genera un punto de medición.', builtIn: 'Integrado', builtInHelp: 'Los esquemas integrados no se pueden editar ni eliminar. Ajuste una copia al crear una prueba.', modified: 'Modificado', @@ -2168,6 +2173,56 @@ const message = { resultHelp: 'La mediana y los mínimos/máximos solo incluyen ejecuciones correctas sin anomalías. P99 es la mediana de los P99 de cada ejecución. La caché y el tráfico externo no están controlados.', }, + benchmarkSettings: { + settingsHelp: + 'Prepare la imagen de Benchmark y un plan de prueba. Podrá crear una prueba de rendimiento cuando ambos estén listos.', + imageAvailable: 'La imagen de Benchmark está lista ({image})', + imageUnavailable: 'No se encontró la imagen de Benchmark ({image})', + retestServiceHelp: + 'Las nuevas pruebas conservan los parámetros de la tarea. Confirme el servicio de modelos actual; las credenciales se obtienen del servicio seleccionado.', + prepareHelp: 'Antes de crear una prueba, prepare la imagen Benchmark y los planes de prueba en {settings}.', + image: 'Imagen de Benchmark', + ready: 'Listo', + unconfigured: 'Sin configurar', + checkFailed: 'Error de comprobación', + imageMissing: 'No se encontró la imagen requerida. Descargue {image} en la gestión de imágenes.', + imageReady: 'La imagen de Benchmark está lista para crear pruebas.', + imageHelp: + 'La imagen de Benchmark ejecuta el cliente de carga y envía solicitudes al servicio de modelos seleccionado.', + mainNodeHelp: 'Las pruebas se ejecutan en el nodo principal. Prepare la imagen y el tokenizador en ese nodo.', + goImages: 'Ir a la gestión de imágenes', + goModels: 'Ir a las descargas de modelos', + tokenizerHelp: + 'Los tokenizadores codifican el texto de prueba y cuentan los tokens. Seleccione un modelo con archivos de tokenizador válidos en el directorio de modelos predeterminado.', + tokenizerEmpty: + 'No hay modelos disponibles. Descargue un modelo que incluya archivos de tokenizador en las descargas de modelos.', + tokenizerEmptyWithDownload: + 'No hay modelos disponibles. Abra {download} para descargar un modelo que incluya archivos de tokenizador.', + tokenizerInvalid: + 'Este modelo no tiene un tokenizador utilizable. Seleccione otro modelo o prepare sus archivos en las descargas de modelos.', + schemeHelp: + 'Los planes de prueba definen los parámetros de solicitud, la concurrencia y las reglas de ejecución. Prepare al menos un plan disponible.', + schemeEmpty: 'No hay planes de prueba disponibles. Cree uno primero.', + manageSchemes: 'Gestionar planes de prueba', + selectService: 'Seleccione un servicio de modelos', + serviceHelp: + 'Seleccione el servicio de modelos que desea probar. Se enviarán solicitudes a este servicio; asegúrese de que sea accesible.', + noServices: 'No hay servicios de modelos disponibles. Añada uno primero.', + goModelServices: 'Ir a los servicios de modelos', + unsupportedServices: + 'Los servicios no compatibles están deshabilitados. Pase el cursor sobre una opción para ver el motivo.', + unsupportedProtocol: + 'Este protocolo de API no es compatible: {0}. Seleccione un servicio de modelos que use OpenAI Chat Completions.', + unsupportedAuth: + 'Este método de autenticación no es compatible: {0}. Seleccione un servicio que use autenticación Bearer.', + serviceModelsMissing: + 'Este servicio no tiene modelos configurados. Añada modelos en la gestión de servicios de modelos.', + prerequisitesTitle: 'Complete primero los ajustes de la prueba', + prerequisitesMissing: 'Los siguientes requisitos no están listos: {0}. Complételos en los ajustes.', + precheckFailed: + 'No se pudieron comprobar los requisitos de la prueba. Abra los ajustes y vuelva a comprobarlos.', + goSettings: 'Ir a los ajustes', + }, benchmarkOverview: { comparison: 'Comparación de escenarios y concurrencia', comparisonHelp: 'Haz clic en un escenario para ver los detalles de esa combinación.', diff --git a/frontend/src/lang/modules/fa.ts b/frontend/src/lang/modules/fa.ts index 71fdc316b..77d40b8e5 100644 --- a/frontend/src/lang/modules/fa.ts +++ b/frontend/src/lang/modules/fa.ts @@ -1616,6 +1616,8 @@ const message = { }, benchmark: { title: 'معیار سنجش', + description: + 'عملکرد سرویس\u200cهای مدل را با طول\u200cهای مختلف درخواست و تنظیمات گوناگون هم\u200cزمانی ارزیابی کنید تا معیارهایی مانند توان عملیاتی، زمان رسیدن به اولین توکن و تأخیر درخواست\u200cها اندازه\u200cگیری شود.', launchCommand: 'دستور راه‌اندازی', retest: 'آزمایش مجدد', statusRunning: 'در حال اجرا', @@ -2087,6 +2089,9 @@ const message = { customDescription: 'با یک سناریو شروع کنید، پارامترهای آن را تنظیم کنید و در صورت نیاز سناریوهای بیشتری اضافه کنید.', scenarios: 'سناریوها', + scenarioCount: 'سناریوها (در مجموع {count} مورد)', + scenarioHelp: + 'هر سناریو، توکن‌های ورودی/خروجی، سطوح هم‌زمانی و پارامترهای درخواست را مشخص می‌کند. سطوح هم‌زمانی به‌ترتیب آزمایش می‌شوند؛ هر سطح به تعداد تکرارهای تنظیم‌شده اجرا می‌شود و هر اجرا یک نقطهٔ اندازه‌گیری ایجاد می‌کند.', builtIn: 'داخلی', builtInHelp: 'طرح‌های داخلی قابل ویرایش یا حذف نیستند. هنگام ایجاد آزمون یک نسخه را تنظیم کنید.', modified: 'تغییریافته', @@ -2126,6 +2131,51 @@ const message = { resultHelp: 'میانه و کمینه/بیشینه فقط از اجراهای موفق بدون ناهنجاری درخواست محاسبه می‌شوند. P99 میانه P99 هر اجرا است. کش و ترافیک بیرونی کنترل نشده‌اند.', }, + benchmarkSettings: { + settingsHelp: + 'ابتدا ایمیج Benchmark و یک طرح آزمون را آماده کنید. پس از آماده شدن هر دو، می‌توانید آزمون معیار ایجاد کنید.', + imageAvailable: 'ایمیج Benchmark آماده است ({image})', + imageUnavailable: 'ایمیج Benchmark یافت نشد ({image})', + prepareHelp: 'پیش از ایجاد آزمون معیار، ایمیج Benchmark و طرح‌های آزمون را در {settings} آماده کنید.', + image: 'ایمیج Benchmark', + ready: 'آماده', + unconfigured: 'پیکربندی نشده', + checkFailed: 'بررسی ناموفق', + imageMissing: 'ایمیج موردنیاز یافت نشد. {image} را در بخش مدیریت ایمیج دریافت کنید.', + imageReady: 'ایمیج Benchmark برای ایجاد آزمون آماده است.', + imageHelp: + 'ایمیج Benchmark کلاینت آزمون بار را اجرا کرده و درخواست‌ها را به سرویس مدل انتخاب‌شده ارسال می‌کند.', + mainNodeHelp: 'آزمون‌ها روی گره اصلی اجرا می‌شوند. ایمیج و توکن‌ساز را روی همان گره آماده کنید.', + goImages: 'رفتن به مدیریت ایمیج', + goModels: 'رفتن به دانلود مدل', + tokenizerHelp: + 'توکن‌ساز متن آزمون را کدگذاری و توکن‌ها را شمارش می‌کند. مدلی با فایل‌های توکن‌ساز معتبر از پوشه پیش‌فرض مدل‌ها انتخاب کنید.', + tokenizerEmpty: 'مدلی در دسترس نیست. مدلی حاوی فایل‌های توکن‌ساز را از صفحه دانلود مدل دریافت کنید.', + tokenizerEmptyWithDownload: + 'مدلی در دسترس نیست. صفحه {download} را باز کنید و مدلی حاوی فایل‌های توکن‌ساز دانلود کنید.', + tokenizerInvalid: + 'توکن‌ساز این مدل قابل استفاده نیست. مدل دیگری انتخاب کنید یا فایل‌های آن را در صفحه دانلود مدل آماده کنید.', + schemeHelp: + 'طرح‌های آزمون، پارامترهای درخواست، هم‌زمانی و قواعد اجرا را تعیین می‌کنند. حداقل یک طرح قابل استفاده آماده کنید.', + schemeEmpty: 'طرح آزمونی موجود نیست. ابتدا یک طرح ایجاد کنید.', + manageSchemes: 'مدیریت طرح‌های آزمون', + selectService: 'یک سرویس مدل انتخاب کنید', + serviceHelp: + 'سرویس مدلی را برای آزمون انتخاب کنید. درخواست‌ها به این سرویس ارسال می‌شوند؛ از دسترس‌پذیر بودن آن مطمئن شوید.', + noServices: 'سرویس مدلی موجود نیست. ابتدا یک سرویس مدل اضافه کنید.', + goModelServices: 'رفتن به سرویس‌های مدل', + unsupportedServices: 'سرویس‌های پشتیبانی‌نشده غیرفعال هستند. برای مشاهده دلیل، نشانگر را روی گزینه نگه دارید.', + unsupportedProtocol: + 'این پروتکل API پشتیبانی نمی‌شود: {0}. سرویسی با پروتکل OpenAI Chat Completions انتخاب کنید.', + unsupportedAuth: 'این روش احراز هویت پشتیبانی نمی‌شود: {0}. سرویسی با احراز هویت Bearer انتخاب کنید.', + serviceModelsMissing: 'این سرویس هنوز مدلی ندارد. در بخش مدیریت سرویس مدل، مدل اضافه کنید.', + prerequisitesTitle: 'ابتدا تنظیمات آزمون معیار را تکمیل کنید', + prerequisitesMissing: 'پیش‌نیازهای زیر آماده نیستند: {0}. آن‌ها را در تنظیمات تکمیل کنید.', + precheckFailed: 'بررسی پیش‌نیازهای آزمون ممکن نشد. تنظیمات را باز کرده و دوباره بررسی کنید.', + goSettings: 'رفتن به تنظیمات', + retestServiceHelp: + 'آزمون مجدد پارامترهای وظیفه را حفظ می‌کند. سرویس مدل فعلی را تأیید کنید؛ اطلاعات احراز هویت از سرویس انتخاب‌شده خوانده می‌شود.', + }, benchmarkOverview: { comparison: 'مقایسه سناریوها و هم\u200cزمانی', comparisonHelp: 'برای مشاهده جزئیات هر ترکیب روی نام سناریو کلیک کنید.', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 6be04aef1..a348ff1ec 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -1624,6 +1624,8 @@ const message = { }, benchmark: { title: 'ベンチマーク', + description: + 'モデルサービスのベンチマークを実行し、リクエストの長さや同時実行数の設定ごとに、スループット、最初のトークンまでの時間、リクエストの所要時間などの指標を評価します。', launchCommand: '起動コマンド', retest: '再テスト', statusRunning: '実行中', @@ -2091,6 +2093,9 @@ const message = { fullDescription: '長い入力と共有プレフィックスを含む、複数シナリオ・同時実行数での反復測定です。', customDescription: '1つのシナリオから始め、パラメーターを設定し、必要に応じて追加します。', scenarios: 'シナリオ', + scenarioCount: 'シナリオ(合計 {count} 件)', + scenarioHelp: + '各シナリオでは、入力/出力トークン数、同時実行数の段階、リクエストパラメーターを定義します。各同時実行数を順番にテストし、設定した反復回数だけ実行します。実行ごとに 1 つの測定点が生成されます。', builtIn: '組み込み', builtInHelp: '組み込みプランは編集・削除できません。テスト作成時にコピーを調整できます。', modified: '変更済み', @@ -2130,6 +2135,54 @@ const message = { resultHelp: '要求異常のない成功した試行のみを集計し、中央値と最小・最大値を表示します。P99 は試行ごとの P99 の中央値です。キャッシュと外部トラフィックは制御されません。', }, + benchmarkSettings: { + settingsHelp: + 'Benchmark イメージとテストプランを準備してください。両方の準備が完了すると、ベンチマークを作成できます。', + imageAvailable: 'Benchmark イメージは準備済みです({image})', + imageUnavailable: 'Benchmark イメージが見つかりません({image})', + retestServiceHelp: + '再テストではタスクのパラメーターを引き継ぎます。現在のモデルサービスを確認してください。認証情報は選択したサービスから読み込まれます。', + prepareHelp: 'ベンチマークを作成する前に、{settings} で Benchmark イメージとテストプランを準備してください。', + image: 'Benchmark イメージ', + ready: '準備完了', + unconfigured: '未設定', + checkFailed: '確認失敗', + imageMissing: '必要なイメージが見つかりません。イメージ管理で {image} を取得してください。', + imageReady: 'Benchmark イメージの準備ができました。ベンチマークを作成できます。', + imageHelp: + 'Benchmark イメージは負荷テストクライアントを実行し、選択したモデルサービスにリクエストを送信します。', + mainNodeHelp: + 'ベンチマークはメインノードで実行されます。イメージとトークナイザーをメインノードで準備してください。', + goImages: 'イメージ管理へ', + goModels: 'モデルダウンロードへ', + tokenizerHelp: + 'トークナイザーはテストテキストのエンコードとトークン数の計算に使用します。既定のモデルディレクトリから有効なトークナイザーファイルを含むモデルを選択してください。', + tokenizerEmpty: + '利用できるモデルがありません。モデルダウンロードでトークナイザーファイルを含むモデルをダウンロードしてください。', + tokenizerEmptyWithDownload: + '利用できるモデルがありません。{download}ページでトークナイザーファイルを含むモデルをダウンロードしてください。', + tokenizerInvalid: + 'このモデルのトークナイザーは使用できません。別のモデルを選択するか、モデルダウンロードでファイルを準備し直してください。', + schemeHelp: + 'テストプランはリクエストパラメーター、同時実行数、実行ルールを定義します。利用できるプランを少なくとも 1 つ準備してください。', + schemeEmpty: '利用できるテストプランがありません。先にプランを作成してください。', + manageSchemes: 'テストプランの管理', + selectService: 'モデルサービスを選択', + serviceHelp: + 'ベンチマークするモデルサービスを選択してください。このサービスにリクエストが送信されるため、接続可能であることを確認してください。', + noServices: '利用できるモデルサービスがありません。先にモデルサービスを追加してください。', + goModelServices: 'モデルサービスへ', + unsupportedServices: '未対応のサービスは選択できません。選択肢にカーソルを合わせると理由を確認できます。', + unsupportedProtocol: + 'この API プロトコルには対応していません: {0}。OpenAI Chat Completions を使用するモデルサービスを選択してください。', + unsupportedAuth: 'この認証方式には対応していません: {0}。Bearer 認証を使用するサービスを選択してください。', + serviceModelsMissing: + 'このサービスにはモデルが設定されていません。モデルサービス管理でモデルを追加してください。', + prerequisitesTitle: '先にベンチマーク設定を完了してください', + prerequisitesMissing: '次の準備が完了していません: {0}。設定で準備を完了してください。', + precheckFailed: 'ベンチマークの前提条件を確認できませんでした。設定を開いてもう一度確認してください。', + goSettings: '設定へ', + }, benchmarkOverview: { comparison: 'シナリオと同時実行数の比較', comparisonHelp: 'シナリオ名をクリックすると、その組み合わせの詳細を表示します。', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 27eef7043..d052dea46 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -1608,6 +1608,8 @@ const message = { }, benchmark: { title: '벤치마크', + description: + '모델 서비스의 벤치마크를 실행하여 다양한 요청 길이와 동시 실행 설정에서 처리량, 첫 토큰까지 걸리는 시간, 요청 지연 시간 등의 지표를 평가합니다.', launchCommand: '시작 명령', retest: '다시 테스트', statusRunning: '실행 중', @@ -2070,6 +2072,9 @@ const message = { fullDescription: '긴 입력과 공유 접두사를 포함하여 여러 시나리오와 동시 요청 수로 반복 측정합니다.', customDescription: '시나리오 하나로 시작하여 매개변수를 설정하고 필요에 따라 추가합니다.', scenarios: '시나리오', + scenarioCount: '시나리오(총 {count}개)', + scenarioHelp: + '각 시나리오는 입력/출력 토큰 수, 동시 실행 수준 및 요청 매개변수를 정의합니다. 동시 실행 수준을 순서대로 테스트하고, 각 수준을 설정된 반복 횟수만큼 실행하며, 실행할 때마다 측정점 하나를 생성합니다.', builtIn: '기본 제공', builtInHelp: '기본 제공 계획은 수정하거나 삭제할 수 없습니다. 테스트 생성 시 복사본을 조정하세요.', modified: '수정됨', @@ -2109,6 +2114,52 @@ const message = { resultHelp: '요청 이상이 없는 성공한 실행만 중앙값과 최솟값/최댓값에 포함합니다. P99는 각 실행 P99의 중앙값입니다. 캐시와 외부 트래픽은 통제되지 않습니다.', }, + benchmarkSettings: { + settingsHelp: + 'Benchmark 이미지와 테스트 계획을 먼저 준비하세요. 두 항목이 모두 준비되면 벤치마크를 생성할 수 있습니다.', + imageAvailable: 'Benchmark 이미지가 준비되었습니다 ({image})', + imageUnavailable: 'Benchmark 이미지를 찾을 수 없습니다 ({image})', + retestServiceHelp: + '재테스트는 작업 매개변수를 유지합니다. 현재 모델 서비스를 확인하세요. 인증 정보는 선택한 서비스에서 불러옵니다.', + prepareHelp: '벤치마크를 생성하기 전에 {settings}에서 Benchmark 이미지와 테스트 계획을 준비하세요.', + image: 'Benchmark 이미지', + ready: '준비됨', + unconfigured: '미설정', + checkFailed: '확인 실패', + imageMissing: '필요한 이미지를 찾을 수 없습니다. 이미지 관리에서 {image} 이미지를 가져오세요.', + imageReady: 'Benchmark 이미지가 준비되었습니다. 벤치마크를 생성할 수 있습니다.', + imageHelp: 'Benchmark 이미지는 부하 테스트 클라이언트를 실행하고 선택한 모델 서비스에 요청을 보냅니다.', + mainNodeHelp: '벤치마크는 메인 노드에서 실행됩니다. 이미지와 토크나이저를 메인 노드에 준비하세요.', + goImages: '이미지 관리로 이동', + goModels: '모델 다운로드로 이동', + tokenizerHelp: + '토크나이저는 테스트 텍스트를 인코딩하고 토큰 수를 계산합니다. 기본 모델 디렉터리에서 유효한 토크나이저 파일이 포함된 모델을 선택하세요.', + tokenizerEmpty: + '사용 가능한 모델이 없습니다. 모델 다운로드에서 토크나이저 파일이 포함된 모델을 다운로드하세요.', + tokenizerEmptyWithDownload: + '사용 가능한 모델이 없습니다. {download} 페이지에서 토크나이저 파일이 포함된 모델을 다운로드하세요.', + tokenizerInvalid: + '이 모델의 토크나이저를 사용할 수 없습니다. 다른 모델을 선택하거나 모델 다운로드에서 파일을 다시 준비하세요.', + schemeHelp: + '테스트 계획은 요청 매개변수, 동시 실행 수 및 실행 규칙을 정의합니다. 사용 가능한 계획을 하나 이상 준비하세요.', + schemeEmpty: '사용 가능한 테스트 계획이 없습니다. 먼저 계획을 생성하세요.', + manageSchemes: '테스트 계획 관리', + selectService: '모델 서비스 선택', + serviceHelp: + '벤치마크할 모델 서비스를 선택하세요. 해당 서비스에 요청을 보내므로 정상적으로 접근할 수 있는지 확인하세요.', + noServices: '사용 가능한 모델 서비스가 없습니다. 먼저 모델 서비스를 추가하세요.', + goModelServices: '모델 서비스로 이동', + unsupportedServices: + '지원하지 않는 서비스는 선택할 수 없습니다. 항목 위에 마우스를 올리면 이유를 확인할 수 있습니다.', + unsupportedProtocol: + '지원하지 않는 API 프로토콜입니다: {0}. OpenAI Chat Completions를 사용하는 모델 서비스를 선택하세요.', + unsupportedAuth: '지원하지 않는 인증 방식입니다: {0}. Bearer 인증을 사용하는 서비스를 선택하세요.', + serviceModelsMissing: '이 서비스에 설정된 모델이 없습니다. 모델 서비스 관리에서 모델을 추가하세요.', + prerequisitesTitle: '먼저 벤치마크 설정을 완료하세요', + prerequisitesMissing: '다음 항목이 준비되지 않았습니다: {0}. 설정에서 준비를 완료하세요.', + precheckFailed: '벤치마크 사전 조건을 확인하지 못했습니다. 설정을 열고 다시 확인하세요.', + goSettings: '설정으로 이동', + }, benchmarkOverview: { comparison: '시나리오 및 동시 요청 수 비교', comparisonHelp: '시나리오 이름을 클릭하면 해당 조합의 상세 지표를 확인할 수 있습니다.', diff --git a/frontend/src/lang/modules/lo.ts b/frontend/src/lang/modules/lo.ts index e406fa9f3..5a5efe096 100644 --- a/frontend/src/lang/modules/lo.ts +++ b/frontend/src/lang/modules/lo.ts @@ -1598,6 +1598,8 @@ const message = { }, benchmark: { title: 'ທົດສອບປະສິດທິພາບ (Benchmark)', + description: + 'ທົດສອບປະສິດທິພາບຂອງບໍລິການໂມເດວດ້ວຍຄວາມຍາວຄຳຮ້ອງຂໍ ແລະ ການຕັ້ງຄ່າການຮ້ອງຂໍພ້ອມກັນທີ່ແຕກຕ່າງກັນ ເພື່ອປະເມີນຕົວຊີ້ວັດ ເຊັ່ນ ອັດຕາການປະມວນຜົນ, ເວລາຈົນຮອດໂທເຄັນທຳອິດ ແລະ ເວລາທີ່ໃຊ້ໃນການຮ້ອງຂໍ.', launchCommand: 'ຄຳສັ່ງເລີ່ມຕົ້ນ', retest: 'ທົດສອບໃໝ່', statusRunning: 'ກຳລັງລັນ', @@ -2057,6 +2059,9 @@ const message = { 'ຫຼາຍສະຖານະການ, ຫຼາຍລະດັບຄຳຮ້ອງຂໍພ້ອມກັນ ແລະການວັດແທກຊ້ຳ ລວມທັງຂໍ້ມູນເຂົ້າຍາວແລະຄຳນຳໜ້າຮ່ວມກັນ.', customDescription: 'ເລີ່ມຈາກໜຶ່ງສະຖານະການ, ຕັ້ງຄ່າພາລາມິເຕີ ແລະເພີ່ມຕາມຄວາມຕ້ອງການ.', scenarios: 'ສະຖານະການ', + scenarioCount: 'ສະຖານະການ (ທັງໝົດ {count})', + scenarioHelp: + 'ແຕ່ລະສະຖານະການກຳນົດຈຳນວນໂທເຄັນຂາເຂົ້າ/ຂາອອກ, ລະດັບຄຳຮ້ອງຂໍພ້ອມກັນ ແລະພາລາມິເຕີຄຳຮ້ອງຂໍ. ແຕ່ລະລະດັບຈະຖືກທົດສອບຕາມລຳດັບ ແລະແລ່ນຊ້ຳຕາມຈຳນວນທີ່ກຳນົດ; ແຕ່ລະຄັ້ງສ້າງໜຶ່ງຈຸດວັດແທກ.', builtIn: 'ມາພ້ອມລະບົບ', builtInHelp: 'ແຜນທີ່ມາພ້ອມລະບົບແກ້ໄຂຫຼືລຶບບໍ່ໄດ້. ປັບສຳເນົາໃນເວລາສ້າງການທົດສອບ.', modified: 'ປັບແລ້ວ', @@ -2096,6 +2101,45 @@ const message = { resultHelp: 'ຄ່າກາງ ແລະ ຄ່າຕ່ຳສຸດ/ສູງສຸດໃຊ້ສະເພາະການທົດສອບສຳເລັດທີ່ບໍ່ມີຄຳຮ້ອງຂໍຜິດປົກກະຕິ. P99 ແມ່ນຄ່າກາງຂອງ P99 ແຕ່ລະຄັ້ງ. ແຄຊ ແລະ ການຈະລາຈອນພາຍນອກບໍ່ໄດ້ຄວບຄຸມ.', }, + benchmarkSettings: { + settingsHelp: 'ກະລຸນາກະກຽມອິມເມຈ Benchmark ແລະແຜນທົດສອບກ່ອນ. ເມື່ອທັງສອງພ້ອມແລ້ວ ຈຶ່ງສາມາດສ້າງການທົດສອບໄດ້.', + imageAvailable: 'ອິມເມຈ Benchmark ພ້ອມໃຊ້ງານແລ້ວ ({image})', + imageUnavailable: 'ບໍ່ພົບອິມເມຈ Benchmark ({image})', + prepareHelp: 'ກ່ອນສ້າງການທົດສອບ, ກະກຽມອິມເມຈ Benchmark ແລະແຜນທົດສອບໃນ {settings}.', + image: 'ອິມເມຈ Benchmark', + ready: 'ພ້ອມໃຊ້ງານ', + unconfigured: 'ຍັງບໍ່ໄດ້ຕັ້ງຄ່າ', + checkFailed: 'ກວດສອບບໍ່ສຳເລັດ', + imageMissing: 'ບໍ່ພົບອິມເມຈທີ່ຕ້ອງການ. ກະລຸນາດຶງ {image} ໃນການຈັດການອິມເມຈ.', + imageReady: 'ອິມເມຈ Benchmark ພ້ອມສຳລັບສ້າງການທົດສອບແລ້ວ.', + imageHelp: 'ອິມເມຈ Benchmark ໃຊ້ແລ່ນໂປຣແກຣມທົດສອບໂຫຼດ ແລະສົ່ງຄຳຮ້ອງຂໍໄປຫາບໍລິການໂມເດວທີ່ເລືອກ.', + mainNodeHelp: 'ການທົດສອບແລ່ນຢູ່ໂນດຫຼັກ. ກະກຽມອິມເມຈ ແລະ tokenizer ຢູ່ໂນດນັ້ນ.', + goImages: 'ໄປຈັດການອິມເມຈ', + goModels: 'ໄປດາວໂຫຼດໂມເດວ', + tokenizerHelp: + 'Tokenizer ໃຊ້ເຂົ້າລະຫັດຂໍ້ຄວາມທົດສອບ ແລະນັບ token. ເລືອກໂມເດວທີ່ມີໄຟລ໌ tokenizer ຖືກຕ້ອງຈາກໂຟນເດີໂມເດວເລີ່ມຕົ້ນ.', + tokenizerEmpty: 'ບໍ່ມີໂມເດວທີ່ໃຊ້ໄດ້. ດາວໂຫຼດໂມເດວທີ່ມີໄຟລ໌ tokenizer ໃນໜ້າດາວໂຫຼດໂມເດວ.', + tokenizerEmptyWithDownload: 'ບໍ່ມີໂມເດວທີ່ໃຊ້ໄດ້. ເປີດໜ້າ {download} ເພື່ອດາວໂຫຼດໂມເດວທີ່ມີໄຟລ໌ tokenizer.', + tokenizerInvalid: 'Tokenizer ຂອງໂມເດວນີ້ໃຊ້ບໍ່ໄດ້. ເລືອກໂມເດວອື່ນ ຫຼືກະກຽມໄຟລ໌ຄືນໃນໜ້າດາວໂຫຼດໂມເດວ.', + schemeHelp: + 'ແຜນທົດສອບກຳນົດພາລາມິເຕີຄຳຮ້ອງຂໍ, ຈຳນວນການເຮັດວຽກພ້ອມກັນ ແລະກົດການແລ່ນ. ກະກຽມຢ່າງໜ້ອຍໜຶ່ງແຜນທີ່ໃຊ້ໄດ້.', + schemeEmpty: 'ບໍ່ມີແຜນທົດສອບທີ່ໃຊ້ໄດ້. ສ້າງແຜນກ່ອນ.', + manageSchemes: 'ຈັດການແຜນທົດສອບ', + selectService: 'ເລືອກບໍລິການໂມເດວ', + serviceHelp: 'ເລືອກບໍລິການໂມເດວທີ່ຈະທົດສອບ. ຄຳຮ້ອງຂໍຈະຖືກສົ່ງໄປບໍລິການນີ້; ກະລຸນາກວດວ່າເຂົ້າເຖິງໄດ້.', + noServices: 'ບໍ່ມີບໍລິການໂມເດວ. ເພີ່ມບໍລິການໂມເດວກ່ອນ.', + goModelServices: 'ໄປບໍລິການໂມເດວ', + unsupportedServices: 'ບໍລິການທີ່ບໍ່ຮອງຮັບຖືກປິດໃຊ້. ວາງເມົາສ໌ເທິງຕົວເລືອກເພື່ອເບິ່ງເຫດຜົນ.', + unsupportedProtocol: 'ຍັງບໍ່ຮອງຮັບໂປຣໂຕຄອນ API ນີ້: {0}. ເລືອກບໍລິການທີ່ໃຊ້ OpenAI Chat Completions.', + unsupportedAuth: 'ຍັງບໍ່ຮອງຮັບວິທີຢືນຢັນຕົວຕົນນີ້: {0}. ເລືອກບໍລິການທີ່ໃຊ້ Bearer.', + serviceModelsMissing: 'ບໍລິການນີ້ຍັງບໍ່ມີໂມເດວ. ເພີ່ມໂມເດວໃນການຈັດການບໍລິການໂມເດວ.', + prerequisitesTitle: 'ກະລຸນາຕັ້ງຄ່າການທົດສອບໃຫ້ຄົບກ່ອນ', + prerequisitesMissing: 'ລາຍການຕໍ່ໄປນີ້ຍັງບໍ່ພ້ອມ: {0}. ກະລຸນາກະກຽມໃຫ້ຄົບໃນການຕັ້ງຄ່າ.', + precheckFailed: 'ບໍ່ສາມາດກວດສອບການກະກຽມໄດ້. ເປີດການຕັ້ງຄ່າແລ້ວກວດຄືນ.', + goSettings: 'ໄປການຕັ້ງຄ່າ', + retestServiceHelp: + 'ການທົດສອບຄືນຈະໃຊ້ພາລາມິເຕີຂອງວຽກເກົ່າ. ຢືນຢັນບໍລິການໂມເດວປັດຈຸບັນ; ຂໍ້ມູນຢືນຢັນຕົວຕົນຈະອ່ານຈາກບໍລິການທີ່ເລືອກ.', + }, benchmarkOverview: { comparison: 'ປຽບທຽບສະຖານະການ ແລະ ຈຳນວນຄຳຮ້ອງພ້ອມກັນ', comparisonHelp: 'ຄລິກຊື່ສະຖານະການເພື່ອເບິ່ງລາຍລະອຽດຂອງຊຸດນັ້ນ.', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index c1e493593..a3b5dfb1d 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -1649,6 +1649,8 @@ const message = { }, benchmark: { title: 'Penanda Aras', + description: + 'Jalankan penanda aras perkhidmatan model dengan panjang permintaan dan tetapan keserentakan yang berbeza untuk mengukur metrik seperti daya pemprosesan, masa hingga token pertama dan kependaman permintaan.', launchCommand: 'Arahan Pelancaran', retest: 'Uji Semula', statusRunning: 'Sedang berjalan', @@ -2130,6 +2132,9 @@ const message = { 'Pelbagai senario, tahap keserentakan dan ulangan, termasuk input panjang dan awalan dikongsi.', customDescription: 'Mulakan dengan satu senario, tetapkan parameternya dan tambah lagi mengikut keperluan.', scenarios: 'Senario', + scenarioCount: 'Senario ({count} keseluruhan)', + scenarioHelp: + 'Setiap senario menentukan token input/output, tahap keserentakan dan parameter permintaan. Tahap keserentakan diuji mengikut urutan; setiap tahap dijalankan mengikut bilangan ulangan yang ditetapkan, dan setiap larian menghasilkan satu titik pengukuran.', builtIn: 'Terbina dalam', builtInHelp: 'Pelan terbina dalam tidak boleh disunting atau dipadam. Laraskan salinan semasa mencipta ujian.', modified: 'Diubah suai', @@ -2169,6 +2174,55 @@ const message = { resultHelp: 'Median dan minimum/maksimum hanya melibatkan ujian berjaya tanpa anomali permintaan. P99 ialah median P99 setiap ujian. Cache dan trafik luaran tidak dikawal.', }, + benchmarkSettings: { + settingsHelp: + 'Sediakan imej Benchmark dan skema ujian dahulu. Anda boleh mencipta penanda aras apabila kedua-duanya sedia.', + imageAvailable: 'Imej Benchmark sedia ({image})', + imageUnavailable: 'Imej Benchmark tidak ditemui ({image})', + prepareHelp: 'Sebelum mencipta penanda aras, sediakan imej Benchmark dan skema ujian dalam {settings}.', + image: 'Imej Benchmark', + ready: 'Sedia', + unconfigured: 'Belum dikonfigurasi', + checkFailed: 'Semakan gagal', + imageMissing: 'Imej yang diperlukan tidak ditemui. Tarik {image} dalam pengurusan imej.', + imageReady: 'Imej Benchmark sedia untuk mencipta ujian.', + imageHelp: + 'Imej Benchmark menjalankan klien ujian beban dan menghantar permintaan ke perkhidmatan model yang dipilih.', + mainNodeHelp: 'Penanda aras dijalankan pada nod utama. Sediakan imej dan tokenizer pada nod tersebut.', + goImages: 'Ke pengurusan imej', + goModels: 'Ke muat turun model', + tokenizerHelp: + 'Tokenizer mengekod teks ujian dan mengira token. Pilih model dengan fail tokenizer yang sah daripada direktori model lalai.', + tokenizerEmpty: + 'Tiada model tersedia. Muat turun model yang mengandungi fail tokenizer di halaman muat turun model.', + tokenizerEmptyWithDownload: + 'Tiada model tersedia. Buka {download} untuk memuat turun model yang mengandungi fail tokenizer.', + tokenizerInvalid: + 'Tokenizer model ini tidak boleh digunakan. Pilih model lain atau sediakan failnya di halaman muat turun model.', + schemeHelp: + 'Skema ujian menentukan parameter permintaan, keserentakan dan peraturan pelaksanaan. Sediakan sekurang-kurangnya satu skema yang tersedia.', + schemeEmpty: 'Tiada skema ujian tersedia. Cipta skema dahulu.', + manageSchemes: 'Urus skema ujian', + selectService: 'Pilih perkhidmatan model', + serviceHelp: + 'Pilih perkhidmatan model untuk diuji. Permintaan akan dihantar ke perkhidmatan ini; pastikan ia boleh dicapai.', + noServices: 'Tiada perkhidmatan model tersedia. Tambah perkhidmatan model dahulu.', + goModelServices: 'Ke perkhidmatan model', + unsupportedServices: + 'Perkhidmatan yang tidak disokong dinyahdayakan. Letakkan penuding pada pilihan untuk melihat sebabnya.', + unsupportedProtocol: + 'Protokol API ini tidak disokong: {0}. Pilih perkhidmatan model yang menggunakan OpenAI Chat Completions.', + unsupportedAuth: + 'Kaedah pengesahan ini tidak disokong: {0}. Pilih perkhidmatan yang menggunakan pengesahan Bearer.', + serviceModelsMissing: + 'Perkhidmatan ini belum mempunyai model. Tambah model dalam pengurusan perkhidmatan model.', + prerequisitesTitle: 'Lengkapkan tetapan penanda aras dahulu', + prerequisitesMissing: 'Prasyarat berikut belum sedia: {0}. Lengkapkannya dalam tetapan.', + precheckFailed: 'Tidak dapat menyemak prasyarat penanda aras. Buka tetapan dan semak semula.', + goSettings: 'Ke tetapan', + retestServiceHelp: + 'Ujian semula mengekalkan parameter tugas. Sahkan perkhidmatan model semasa; kelayakan dimuatkan daripada perkhidmatan yang dipilih.', + }, benchmarkOverview: { comparison: 'Perbandingan senario dan keserentakan', comparisonHelp: 'Klik nama senario untuk melihat butiran gabungan itu.', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 96492dea1..b05245f3f 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -1645,6 +1645,8 @@ const message = { }, benchmark: { title: 'Benchmark', + description: + 'Execute testes de desempenho dos serviços de modelos com diferentes comprimentos de solicitação e configurações de simultaneidade para medir métricas como a taxa de processamento, o tempo até o primeiro token e a latência das solicitações.', launchCommand: 'Comando de inicialização', retest: 'Testar novamente', statusRunning: 'Executando', @@ -2126,6 +2128,9 @@ const message = { 'Vários cenários, níveis de concorrência e repetições, incluindo entradas longas e prefixos compartilhados.', customDescription: 'Comece com um cenário, configure os parâmetros e adicione outros conforme necessário.', scenarios: 'Cenários', + scenarioCount: 'Cenários ({count} no total)', + scenarioHelp: + 'Cada cenário define os tokens de entrada/saída, os níveis de concorrência e os parâmetros das requisições. Os níveis são testados em sequência; cada nível é executado pelo número de repetições configurado e cada execução gera um ponto de medição.', builtIn: 'Integrado', builtInHelp: 'Planos integrados não podem ser editados ou excluídos. Ajuste uma cópia ao criar um teste.', modified: 'Modificado', @@ -2165,6 +2170,56 @@ const message = { resultHelp: 'A mediana e os valores mínimo/máximo incluem apenas execuções bem-sucedidas sem anomalias. P99 é a mediana dos P99 de cada execução. Cache e tráfego externo não são controlados.', }, + benchmarkSettings: { + settingsHelp: + 'Prepare a imagem do Benchmark e um plano de teste. Você poderá criar um benchmark quando ambos estiverem prontos.', + imageAvailable: 'A imagem do Benchmark está pronta ({image})', + imageUnavailable: 'A imagem do Benchmark não foi encontrada ({image})', + retestServiceHelp: + 'Os novos testes mantêm os parâmetros da tarefa. Confirme o serviço de modelos atual; as credenciais são obtidas do serviço selecionado.', + prepareHelp: 'Antes de criar um benchmark, prepare a imagem Benchmark e os planos de teste em {settings}.', + image: 'Imagem do Benchmark', + ready: 'Pronto', + unconfigured: 'Não configurado', + checkFailed: 'Falha na verificação', + imageMissing: 'A imagem necessária não foi encontrada. Baixe {image} no gerenciamento de imagens.', + imageReady: 'A imagem do Benchmark está pronta para criar testes.', + imageHelp: + 'A imagem do Benchmark executa o cliente de carga e envia solicitações ao serviço de modelos selecionado.', + mainNodeHelp: 'Os testes são executados no nó principal. Prepare a imagem e o tokenizador nesse nó.', + goImages: 'Ir ao gerenciamento de imagens', + goModels: 'Ir aos downloads de modelos', + tokenizerHelp: + 'Os tokenizadores codificam o texto de teste e contam os tokens. Selecione um modelo com arquivos de tokenizador válidos no diretório padrão de modelos.', + tokenizerEmpty: + 'Não há modelos disponíveis. Baixe um modelo com arquivos de tokenizador nos downloads de modelos.', + tokenizerEmptyWithDownload: + 'Não há modelos disponíveis. Abra {download} para baixar um modelo com arquivos de tokenizador.', + tokenizerInvalid: + 'Este modelo não tem um tokenizador utilizável. Selecione outro modelo ou prepare seus arquivos nos downloads de modelos.', + schemeHelp: + 'Os planos de teste definem os parâmetros de solicitação, a concorrência e as regras de execução. Prepare pelo menos um plano disponível.', + schemeEmpty: 'Não há planos de teste disponíveis. Crie um primeiro.', + manageSchemes: 'Gerenciar planos de teste', + selectService: 'Selecione um serviço de modelos', + serviceHelp: + 'Selecione o serviço de modelos que deseja testar. As solicitações serão enviadas a esse serviço; confirme que ele está acessível.', + noServices: 'Não há serviços de modelos disponíveis. Adicione um primeiro.', + goModelServices: 'Ir aos serviços de modelos', + unsupportedServices: + 'Os serviços incompatíveis estão desativados. Passe o cursor sobre uma opção para ver o motivo.', + unsupportedProtocol: + 'Este protocolo de API não é compatível: {0}. Selecione um serviço de modelos que use OpenAI Chat Completions.', + unsupportedAuth: + 'Este método de autenticação não é compatível: {0}. Selecione um serviço com autenticação Bearer.', + serviceModelsMissing: + 'Este serviço não tem modelos configurados. Adicione modelos no gerenciamento de serviços de modelos.', + prerequisitesTitle: 'Conclua primeiro as configurações do teste', + prerequisitesMissing: 'Os seguintes pré-requisitos não estão prontos: {0}. Conclua-os nas configurações.', + precheckFailed: + 'Não foi possível verificar os pré-requisitos do teste. Abra as configurações e verifique novamente.', + goSettings: 'Ir às configurações', + }, benchmarkOverview: { comparison: 'Comparação de cenários e concorrência', comparisonHelp: 'Clique em um cenário para ver os detalhes dessa combinação.', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 78d231ae5..cd86dcb14 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -1638,6 +1638,8 @@ const message = { }, benchmark: { title: 'Бенчмарк', + description: + 'Проводите тестирование производительности сервисов моделей при разной длине запросов и разных настройках параллелизма, чтобы оценить такие показатели, как пропускная способность, время до первого токена и задержку запросов.', launchCommand: 'Команда запуска', retest: 'Повторить тест', statusRunning: 'Выполняется', @@ -2123,6 +2125,9 @@ const message = { 'Разные сценарии, уровни параллелизма и повторные измерения, включая длинные входы и общие префиксы.', customDescription: 'Начните с одного сценария, настройте параметры и добавьте другие при необходимости.', scenarios: 'Сценарии', + scenarioCount: 'Сценарии (всего {count})', + scenarioHelp: + 'Каждый сценарий задаёт число входных/выходных токенов, уровни параллелизма и параметры запросов. Уровни проверяются последовательно; каждый уровень выполняется заданное число повторов, и каждый запуск создаёт отдельную точку измерения.', builtIn: 'Встроенный', builtInHelp: 'Встроенные планы нельзя изменить или удалить. Настройте копию при создании теста.', modified: 'Изменён', @@ -2162,6 +2167,53 @@ const message = { resultHelp: 'Медиана и минимум/максимум рассчитываются только по успешным запускам без аномалий запросов. P99 — медиана P99 отдельных запусков. Кеш и внешний трафик не контролируются.', }, + benchmarkSettings: { + settingsHelp: + 'Подготовьте образ Benchmark и схему тестирования. Когда оба компонента будут готовы, можно создать тест производительности.', + imageAvailable: 'Образ Benchmark готов ({image})', + imageUnavailable: 'Образ Benchmark не найден ({image})', + retestServiceHelp: + 'При повторном тесте сохраняются параметры задачи. Подтвердите текущий сервис модели; данные авторизации загружаются из выбранного сервиса.', + prepareHelp: 'Перед созданием теста подготовьте образ Benchmark и схемы тестирования в разделе {settings}.', + image: 'Образ Benchmark', + ready: 'Готово', + unconfigured: 'Не настроено', + checkFailed: 'Ошибка проверки', + imageMissing: 'Необходимый образ не найден. Загрузите {image} в разделе управления образами.', + imageReady: 'Образ Benchmark готов к созданию тестов.', + imageHelp: + 'Образ Benchmark запускает клиент нагрузочного тестирования и отправляет запросы выбранному сервису модели.', + mainNodeHelp: 'Тесты выполняются на главном узле. Подготовьте образ и токенизатор на этом узле.', + goImages: 'К управлению образами', + goModels: 'К загрузке моделей', + tokenizerHelp: + 'Токенизаторы кодируют тестовый текст и подсчитывают токены. Выберите модель с корректными файлами токенизатора из каталога моделей по умолчанию.', + tokenizerEmpty: 'Нет доступных моделей. Загрузите модель с файлами токенизатора в разделе загрузки моделей.', + tokenizerEmptyWithDownload: + 'Нет доступных моделей. Откройте раздел {download}, чтобы загрузить модель с файлами токенизатора.', + tokenizerInvalid: + 'Токенизатор этой модели недоступен. Выберите другую модель или подготовьте файлы заново в разделе загрузки моделей.', + schemeHelp: + 'Схемы тестирования определяют параметры запросов, параллелизм и правила выполнения. Подготовьте хотя бы одну доступную схему.', + schemeEmpty: 'Нет доступных схем тестирования. Сначала создайте схему.', + manageSchemes: 'Управление схемами тестирования', + selectService: 'Выберите сервис модели', + serviceHelp: + 'Выберите сервис модели для тестирования. Запросы будут отправляться этому сервису; убедитесь, что он доступен.', + noServices: 'Нет доступных сервисов моделей. Сначала добавьте сервис модели.', + goModelServices: 'К сервисам моделей', + unsupportedServices: + 'Неподдерживаемые сервисы недоступны для выбора. Наведите указатель на пункт, чтобы узнать причину.', + unsupportedProtocol: + 'Этот протокол API не поддерживается: {0}. Выберите сервис модели с протоколом OpenAI Chat Completions.', + unsupportedAuth: 'Этот способ авторизации не поддерживается: {0}. Выберите сервис с авторизацией Bearer.', + serviceModelsMissing: + 'Для этого сервиса не настроены модели. Добавьте модели в разделе управления сервисами моделей.', + prerequisitesTitle: 'Сначала завершите настройку тестирования', + prerequisitesMissing: 'Не готовы следующие компоненты: {0}. Завершите их настройку.', + precheckFailed: 'Не удалось проверить готовность к тестированию. Откройте настройки и повторите проверку.', + goSettings: 'К настройкам', + }, benchmarkOverview: { comparison: 'Сравнение сценариев и параллелизма', comparisonHelp: 'Нажмите на название сценария, чтобы открыть показатели этой комбинации.', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 317f06250..2f151433f 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -1644,6 +1644,8 @@ const message = { }, benchmark: { title: 'Benchmark', + description: + 'Model hizmetlerini farklı istek uzunlukları ve eşzamanlılık ayarlarıyla test ederek aktarım hızı, ilk token süresi ve istek gecikmesi gibi metrikleri ölçün.', launchCommand: 'Başlatma Komutu', retest: 'Yeniden test et', statusRunning: 'Çalışıyor', @@ -2124,6 +2126,9 @@ const message = { 'Uzun girdiler ve ortak önekler dahil, farklı senaryolar ve eşzamanlılık düzeylerinde tekrarlı ölçümler.', customDescription: 'Bir senaryoyla başlayın, parametrelerini ayarlayın ve gerektiğinde yenilerini ekleyin.', scenarios: 'Senaryolar', + scenarioCount: 'Senaryolar (toplam {count})', + scenarioHelp: + 'Her senaryo giriş/çıkış token sayılarını, eşzamanlılık düzeylerini ve istek parametrelerini tanımlar. Eşzamanlılık düzeyleri sırayla test edilir; her düzey ayarlanan tekrar sayısı kadar çalıştırılır ve her çalıştırma bir ölçüm noktası oluşturur.', builtIn: 'Yerleşik', builtInHelp: 'Yerleşik planlar düzenlenemez veya silinemez. Test oluştururken bir kopyayı ayarlayın.', modified: 'Değiştirildi', @@ -2163,6 +2168,52 @@ const message = { resultHelp: 'Medyan ve en düşük/en yüksek değerler yalnızca istek anomalisi olmayan başarılı çalışmaları içerir. P99, çalışma başına P99 değerlerinin medyanıdır. Önbellek ve dış trafik kontrol edilmez.', }, + benchmarkSettings: { + settingsHelp: + 'Önce Benchmark imajını ve bir test planını hazırlayın. Her ikisi de hazır olduğunda bir kıyaslama testi oluşturabilirsiniz.', + imageAvailable: 'Benchmark imajı hazır ({image})', + imageUnavailable: 'Benchmark imajı bulunamadı ({image})', + retestServiceHelp: + 'Yeniden testler görev parametrelerini korur. Geçerli model hizmetini doğrulayın; kimlik bilgileri seçilen hizmetten alınır.', + prepareHelp: + 'Bir kıyaslama oluşturmadan önce {settings} bölümünde Benchmark imajını ve test planlarını hazırlayın.', + image: 'Benchmark imajı', + ready: 'Hazır', + unconfigured: 'Yapılandırılmadı', + checkFailed: 'Kontrol başarısız', + imageMissing: 'Gerekli imaj bulunamadı. İmaj yönetiminde {image} imajını indirin.', + imageReady: 'Benchmark imajı test oluşturmaya hazır.', + imageHelp: 'Benchmark imajı yük testi istemcisini çalıştırır ve seçilen model hizmetine istek gönderir.', + mainNodeHelp: 'Testler ana düğümde çalışır. İmajı ve tokenizer dosyalarını bu düğümde hazırlayın.', + goImages: 'İmaj yönetimine git', + goModels: 'Model indirmelerine git', + tokenizerHelp: + 'Tokenizer test metnini kodlar ve token sayısını hesaplar. Varsayılan model dizininden geçerli tokenizer dosyaları içeren bir model seçin.', + tokenizerEmpty: 'Kullanılabilir model yok. Model indirmelerinden tokenizer dosyaları içeren bir model indirin.', + tokenizerEmptyWithDownload: + 'Kullanılabilir model yok. Tokenizer dosyaları içeren bir model indirmek için {download} sayfasını açın.', + tokenizerInvalid: + 'Bu modelde kullanılabilir tokenizer yok. Başka bir model seçin veya model indirmelerinde dosyalarını hazırlayın.', + schemeHelp: + 'Test planları istek parametrelerini, eşzamanlılığı ve yürütme kurallarını tanımlar. En az bir kullanılabilir plan hazırlayın.', + schemeEmpty: 'Kullanılabilir test planı yok. Önce bir plan oluşturun.', + manageSchemes: 'Test planlarını yönet', + selectService: 'Bir model hizmeti seçin', + serviceHelp: + 'Test edilecek model hizmetini seçin. Bu hizmete istek gönderilecektir; erişilebilir olduğundan emin olun.', + noServices: 'Kullanılabilir model hizmeti yok. Önce bir model hizmeti ekleyin.', + goModelServices: 'Model hizmetlerine git', + unsupportedServices: 'Desteklenmeyen hizmetler devre dışı. Nedenini görmek için seçeneğin üzerine gelin.', + unsupportedProtocol: + 'Bu API protokolü desteklenmiyor: {0}. OpenAI Chat Completions kullanan bir model hizmeti seçin.', + unsupportedAuth: + 'Bu kimlik doğrulama yöntemi desteklenmiyor: {0}. Bearer kimlik doğrulaması kullanan bir hizmet seçin.', + serviceModelsMissing: 'Bu hizmette yapılandırılmış model yok. Model hizmeti yönetiminden model ekleyin.', + prerequisitesTitle: 'Önce test ayarlarını tamamlayın', + prerequisitesMissing: 'Şu ön koşullar hazır değil: {0}. Ayarlardan tamamlayın.', + precheckFailed: 'Test ön koşulları kontrol edilemedi. Ayarları açıp tekrar kontrol edin.', + goSettings: 'Ayarlara git', + }, benchmarkOverview: { comparison: 'Senaryo ve eşzamanlılık karşılaştırması', comparisonHelp: 'Bu birleşimin ayrıntılarını görmek için senaryo adına tıklayın.', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 75b710db4..515da1e7c 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -1541,6 +1541,8 @@ const message = { }, benchmark: { title: '基準測試', + description: + '對模型服務進行基準測試,評估不同請求長度和並行設定下的吞吐量、首 Token 延遲及請求耗時等指標。', launchCommand: '啟動命令', retest: '重新測試', statusRunning: '執行中', @@ -1986,6 +1988,9 @@ const message = { fullDescription: '多場景、多並行與重複測量,包含長輸入和共用前綴。', customDescription: '從一個場景開始,依需求設定參數並新增場景。', scenarios: '場景', + scenarioCount: '共 {count} 個場景', + scenarioHelp: + '每個場景定義輸入/輸出 Token、併發檔位及請求參數;各併發檔位依序測試,每個檔位按重複次數執行,每次執行產生一個測點。', builtIn: '內建', builtInHelp: '內建方案不可編輯或刪除,可在建立測試時調整本次設定。', modified: '已調整', @@ -2025,6 +2030,42 @@ const message = { resultHelp: '彙總僅採用成功且無請求異常的重複測試,顯示中位數與最小/最大值。P99 是各次 P99 的中位數;快取與外部流量未受控。', }, + benchmarkSettings: { + settingsHelp: '請先準備 Benchmark 映像和測試方案,兩項均就緒後即可建立基準測試。', + imageAvailable: 'Benchmark 映像已就緒({image})', + imageUnavailable: '未偵測到 Benchmark 映像({image})', + retestServiceHelp: '重新測試沿用任務的測試參數,請確認目前模型服務;驗證資訊將從所選服務讀取。', + prepareHelp: '建立基準測試前,請先在「{settings}」中完成 Benchmark 映像和測試方案的準備。', + image: 'Benchmark 映像', + ready: '已就緒', + unconfigured: '未設定', + checkFailed: '檢查失敗', + imageMissing: '尚未偵測到所需映像,請前往映像管理拉取 {image}。', + imageReady: 'Benchmark 映像已準備就緒,可用於建立基準測試。', + imageHelp: 'Benchmark 映像用於執行壓測用戶端,測試請求將傳送至所選模型服務。', + mainNodeHelp: '基準測試在主節點執行,映像和分詞器均從主節點檢查。請在主節點準備資源。', + goImages: '前往映像管理', + goModels: '前往模型下載', + tokenizerHelp: '分詞器用於對測試文字進行 Token 編碼及統計,請從預設模型目錄選擇包含有效分詞器檔案的模型。', + tokenizerEmpty: '暫無可用模型,請前往模型下載頁面下載包含分詞器檔案的模型。', + tokenizerEmptyWithDownload: '暫無可用模型,請前往 {download} 頁面下載包含分詞器檔案的模型。', + tokenizerInvalid: '目前模型的分詞器無法使用,請選擇其他模型或前往模型下載頁面重新準備。', + schemeHelp: '測試方案用於定義請求參數、並行設定及執行規則,請至少準備一個可用方案。', + schemeEmpty: '暫無可用測試方案,請先建立測試方案。', + manageSchemes: '管理測試方案', + selectService: '請選擇模型服務', + serviceHelp: '請選擇需要進行基準測試的模型服務。測試將向所選服務傳送請求,請確認服務可以正常存取。', + noServices: '暫無模型服務,請先新增模型服務。', + goModelServices: '前往模型服務', + unsupportedServices: '不相容的服務已停用,可將滑鼠停留在選項上查看原因。', + unsupportedProtocol: '暫不支援此介面協定:{0}。請選擇使用 OpenAI Chat Completions 協定的模型服務。', + unsupportedAuth: '暫不支援此驗證方式:{0}。請選擇使用 Bearer 驗證的模型服務。', + serviceModelsMissing: '此服務尚未設定模型,請前往模型服務管理新增模型。', + prerequisitesTitle: '請先完成基準測試設定', + prerequisitesMissing: '以下設定尚未就緒:{0}。請前往設定完成準備。', + precheckFailed: '無法確認基準測試設定狀態,請前往設定重新檢查。', + goSettings: '前往設定', + }, benchmarkOverview: { comparison: '情境與並行數對照', comparisonHelp: '點選情境名稱查看該組合的指標詳情。', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 6405627b1..ebe15c8bb 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1554,6 +1554,8 @@ const message = { }, benchmark: { title: '基准测试', + description: + '对模型服务进行基准测试,评估不同请求长度和并发配置下的吞吐量、首 Token 延迟及请求耗时等指标。', launchCommand: '启动命令', retest: '重新测试', statusRunning: '运行中', @@ -1994,6 +1996,9 @@ const message = { fullDescription: '多场景、多并发与重复测量,包含长输入和共享前缀。', customDescription: '从一个场景开始,按需设置参数并添加场景。', scenarios: '场景', + scenarioCount: '共 {count} 个场景', + scenarioHelp: + '每个场景定义输入/输出 Token、并发档位及请求参数;各并发档位依次测试,每个档位按重复次数执行,每次执行生成一个测点。', builtIn: '内置', builtInHelp: '内置方案不可编辑或删除,可在创建测试时调整本次配置。', modified: '已调整', @@ -2033,6 +2038,42 @@ const message = { resultHelp: '汇总仅使用成功且无请求异常的重复测试,显示中位数和最小/最大值。P99 是每次测试 P99 的中位数;缓存和外部流量未受控。', }, + benchmarkSettings: { + settingsHelp: '请先准备 Benchmark 镜像和测试方案,两项均就绪后即可创建基准测试。', + imageAvailable: 'Benchmark 镜像已就绪({image})', + imageUnavailable: '未检测到 Benchmark 镜像({image})', + retestServiceHelp: '重测沿用任务的测试参数,请确认当前模型服务;鉴权信息将从所选服务读取。', + prepareHelp: '创建基准测试前,请先在「{settings}」中完成 Benchmark 镜像和测试方案的准备。', + image: 'Benchmark 镜像', + ready: '已就绪', + unconfigured: '未配置', + checkFailed: '检查失败', + imageMissing: '尚未检测到所需镜像,请前往镜像管理拉取 {image}。', + imageReady: 'Benchmark 镜像已准备就绪,可以用于创建基准测试。', + imageHelp: 'Benchmark 镜像用于运行压测客户端,测试请求将发送到所选模型服务。', + mainNodeHelp: '基准测试在主节点执行,镜像和分词器均从主节点检查。请在主节点准备资源。', + goImages: '前往镜像管理', + goModels: '前往模型下载', + tokenizerHelp: '分词器用于对测试文本进行 Token 编码及统计,请从默认模型目录选择包含有效分词器文件的模型。', + tokenizerEmpty: '暂无可用模型,请前往模型下载页面下载包含分词器文件的模型。', + tokenizerEmptyWithDownload: '暂无可用模型,请前往 {download} 页面下载包含分词器文件的模型。', + tokenizerInvalid: '当前模型的分词器不可用,请选择其他模型或前往模型下载页面重新准备。', + schemeHelp: '测试方案用于定义请求参数、并发配置及执行规则,请至少准备一个可用方案。', + schemeEmpty: '暂无可用测试方案,请先创建测试方案。', + manageSchemes: '管理测试方案', + selectService: '请选择模型服务', + serviceHelp: '请选择需要进行基准测试的模型服务。测试将向所选服务发送请求,请确保服务可以正常访问。', + noServices: '暂无模型服务,请先添加模型服务。', + goModelServices: '前往模型服务', + unsupportedServices: '不兼容的服务已禁用,可悬停查看原因。', + unsupportedProtocol: '暂不支持此接口协议:{0}。请选择使用 OpenAI Chat Completions 协议的模型服务。', + unsupportedAuth: '暂不支持此鉴权方式:{0}。请选择使用 Bearer 鉴权的模型服务。', + serviceModelsMissing: '该服务尚未配置模型,请前往模型服务管理添加模型。', + prerequisitesTitle: '请先完成基准测试设置', + prerequisitesMissing: '以下配置尚未就绪:{0}。请前往设置完成准备。', + precheckFailed: '无法确认基准测试配置状态,请前往设置重新检查。', + goSettings: '前往设置', + }, benchmarkOverview: { comparison: '场景与并发对照', comparisonHelp: '点击场景名称查看该组合的指标详情。', diff --git a/frontend/src/views/container/image/index.vue b/frontend/src/views/container/image/index.vue index 34ab4cb09..862cd509c 100644 --- a/frontend/src/views/container/image/index.vue +++ b/frontend/src/views/container/image/index.vue @@ -162,7 +162,8 @@