diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 5e90203b..348a84aa 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -48,9 +48,9 @@ export default { 'models.form.scheduletype.manual': 'Specify GPU', 'models.form.scheduletype.gpuType': 'Specify GPU Type', 'models.form.scheduletype.auto.tips': - 'Automatically deploys model instances to appropriate GPUs/Workers based on current resource conditions.', + 'Automatically deploys model instances to appropriate GPUs based on current resource conditions.', 'models.form.scheduletype.manual.tips': - 'Allows you to manually specify the GPUs/Workers to deploy the model instances to.', + 'Allows you to manually specify the GPUs to deploy the model instances to.', 'models.form.manual.schedule': 'Manual Schedule', 'models.table.gpuindex': 'GPU Index', 'models.table.backend': 'Backends', diff --git a/src/locales/en-US/resources.ts b/src/locales/en-US/resources.ts index 2c49f7a6..45099d64 100644 --- a/src/locales/en-US/resources.ts +++ b/src/locales/en-US/resources.ts @@ -1,6 +1,7 @@ export default { 'resources.title': 'Resources', - 'resources.nodes': 'Nodes', + 'resources.nodes': 'Workers', + 'resources.worker': 'Worker', 'resources.button.create': 'Add Worker', 'resources.button.edit': 'Edit Worker', 'resources.button.edittags': 'Edit Labels', diff --git a/src/locales/ja-JP/models.ts b/src/locales/ja-JP/models.ts index b6e173e5..c76a7ef3 100644 --- a/src/locales/ja-JP/models.ts +++ b/src/locales/ja-JP/models.ts @@ -50,9 +50,9 @@ export default { 'models.form.scheduletype.manual': 'GPUを指定', 'models.form.scheduletype.gpuType': 'GPUタイプを指定', 'models.form.scheduletype.auto.tips': - '現在のリソース状況に基づいて、モデルインスタンスを適切なGPU/ワーカーに自動的にデプロイします。', + '現在のリソース状況に基づいて、モデルインスタンスを適切なGPUに自動的にデプロイします。', 'models.form.scheduletype.manual.tips': - 'モデルインスタンスをデプロイするGPU/ワーカーを手動で指定できます。', + 'モデルインスタンスをデプロイするGPUを手動で指定できます。', 'models.form.manual.schedule': '手動スケジュール', 'models.table.gpuindex': 'GPUインデックス', 'models.table.backend': 'バックエンド', diff --git a/src/locales/ja-JP/resources.ts b/src/locales/ja-JP/resources.ts index dc5f9041..f098f584 100644 --- a/src/locales/ja-JP/resources.ts +++ b/src/locales/ja-JP/resources.ts @@ -94,7 +94,8 @@ export default { 'resource.register.maos.support': 'Apple Silicon (M series), macOS 14+', 'resource.register.windows.support': 'win 10, win 11', 'resources.model.instance': 'Model Instance', - 'resources.worker.download.privatekey': 'Download Private Key' + 'resources.worker.download.privatekey': 'Download Private Key', + 'resources.worker': 'Worker' }; // ========== To-Do: Translate Keys (Remove After Translation) ========== @@ -111,5 +112,6 @@ export default { // 11. 'resource.register.windows.support': 'win 10, win 11', // 12. 'resources.filter.status': 'Filter by Status', // 13. 'resources.model.instance': 'Model Instance', -// 14. 'resources.worker.download.privatekey': 'Download Private Key' +// 14. 'resources.worker.download.privatekey': 'Download Private Key', +// 15. 'resources.worker': 'Worker', // ========== End of To-Do List ========== diff --git a/src/locales/ru-RU/models.ts b/src/locales/ru-RU/models.ts index 133e9246..e687a004 100644 --- a/src/locales/ru-RU/models.ts +++ b/src/locales/ru-RU/models.ts @@ -48,9 +48,9 @@ export default { 'models.form.scheduletype.manual': 'Указать GPU', 'models.form.scheduletype.gpuType': 'Указать тип GPU', 'models.form.scheduletype.auto.tips': - 'Автоматическое развертывание инстансов модели на подходящие GPU/воркеры в зависимости от текущих ресурсов.', + 'Автоматическое развертывание инстансов модели на подходящие GPU в зависимости от текущих ресурсов.', 'models.form.scheduletype.manual.tips': - 'Позволяет вручную указать GPU/воркеры для развертывания инстансов модели.', + 'Позволяет вручную указать GPU для развертывания инстансов модели.', 'models.form.manual.schedule': 'Ручное распределение', 'models.table.gpuindex': 'Индекс GPU', 'models.table.backend': 'Бэкенды', diff --git a/src/locales/ru-RU/resources.ts b/src/locales/ru-RU/resources.ts index 6d4ea136..c140da9b 100644 --- a/src/locales/ru-RU/resources.ts +++ b/src/locales/ru-RU/resources.ts @@ -92,9 +92,10 @@ export default { 'resource.register.maos.support': 'Apple Silicon (серия M), macOS 14+', 'resource.register.windows.support': 'Windows 10, Windows 11', 'resources.model.instance': 'Модель экземпляра', - 'resources.worker.download.privatekey': 'Скачать приватный ключ' + 'resources.worker.download.privatekey': 'Скачать приватный ключ', + 'resources.worker': 'Worker' }; // ========== To-Do: Translate Keys (Remove After Translation) ========== - +// 1. 'resources.worker': 'Worker', // ========== End of To-Do List ========== diff --git a/src/locales/zh-CN/clusters.ts b/src/locales/zh-CN/clusters.ts index 899c0d6e..5755e2e5 100644 --- a/src/locales/zh-CN/clusters.ts +++ b/src/locales/zh-CN/clusters.ts @@ -10,7 +10,7 @@ export default { 'clusters.edit.cluster': '编辑 {cluster}', 'clusters.provider.custom': '自定义', 'clusters.button.register': '注册集群', - 'clusters.button.addNodePool': '添加 Worker Pool', + 'clusters.button.addNodePool': '添加节点池', 'clusters.button.add.credential': '添加 {provider} 凭证', 'clusters.credential.title': '凭证', 'clusters.credential.token': '访问令牌', @@ -23,7 +23,7 @@ export default { 'clusters.workerpool.volumes': '存储卷', 'clusters.workerpool.format': '文件系统格式', 'clusters.workerpool.size': '容量(GiB)', - 'clusters.workerpool.title': 'Worker Pools', + 'clusters.workerpool.title': '节点池', 'clusters.workerpool.cloudOptions': '添加云配置', 'clusters.workerpool.volumes.add': '添加存储卷', 'clusters.create.provider.self': '自建环境', @@ -36,11 +36,11 @@ export default { 'clusters.create.noImages': '无可用的镜像', 'clusters.create.noInstanceTypes': '无可用的实例类型', 'clusters.create.noRegions': '无可用的区域', - 'clusters.workerpool.batchSize.desc': 'Worker 池中同时创建的 worker 数量', + 'clusters.workerpool.batchSize.desc': '节点池中同时创建的节点数量', 'clusters.create.addworker.tips': '在执行以下命令之前,请确保已满足 {label} 的先决条件。', 'clusters.create.addCommand.tips': - ' 在需要添加的 Worker 上运行以下命令,将其加入到集群中', + ' 在需要添加的节点上运行以下命令,将其加入到集群中', 'clusters.create.register.tips': ' 在需要添加的 Kubernetes 集群上运行以下命令,将其中的节点加入到集群中', 'cluster.create.checkEnv.tips': '使用以下命令检查环境是否准备妥当', diff --git a/src/locales/zh-CN/dashboard.ts b/src/locales/zh-CN/dashboard.ts index 25c364a7..93bd096e 100644 --- a/src/locales/zh-CN/dashboard.ts +++ b/src/locales/zh-CN/dashboard.ts @@ -1,6 +1,6 @@ export default { 'dashboard.title': '概览', - 'dashboard.workers': 'Workers', + 'dashboard.workers': '节点', 'dashboard.models': '模型', 'dashboard.totalgpus': 'GPUs', 'dashboard.allocategpus': '已分配 GPU 数量', diff --git a/src/locales/zh-CN/menu.ts b/src/locales/zh-CN/menu.ts index b8699fb3..cb1bf0aa 100644 --- a/src/locales/zh-CN/menu.ts +++ b/src/locales/zh-CN/menu.ts @@ -21,7 +21,7 @@ export default { 'menu.login': '登录', 'menu.usage': '使用量', 'menu.404': '404', - 'menu.resources.workers': 'Workers', + 'menu.resources.workers': '节点', 'menu.resources.gpus': 'GPUs', 'menu.resources.modelfiles': '模型文件', 'menu.accessControl': '访问控制', diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index 6969ab42..a442d33a 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -16,7 +16,7 @@ export default { 'models.form.partialoffload.tips': '启用 CPU 卸载时,如果 GPU 资源不足,则模型的一部分层将被卸载到 CPU 上,在没有 GPU 可用时,会使用纯 CPU 推理。', 'models.form.distribution.tips': - '允许在单个 Worker 资源不足时,将部分计算卸载到一个或多个远程 Worker。', + '允许在单个节点资源不足时,将部分计算卸载到一个或多个远程节点', 'models.openinplayground': '在 Playground 中打开', 'models.instances': '实例', 'models.table.replicas.edit': '调整副本数', @@ -49,13 +49,12 @@ export default { 'models.form.scheduletype.manual': '指定 GPU', 'models.form.scheduletype.gpuType': '指定 GPU 类型', 'models.form.scheduletype.auto.tips': - '自动根据当前资源情况部署模型实例到合适的 GPU/Worker。', - 'models.form.scheduletype.manual.tips': - '手动调度可指定模型实例部署的 GPU/Worker。', + '自动根据当前资源情况部署模型实例到合适的 GPU 上。', + 'models.form.scheduletype.manual.tips': '手动调度可指定模型实例部署的 GPU。', 'models.form.manual.schedule': '手动调度', 'models.table.gpuindex': 'GPU 序号', 'models.table.backend': '后端', - 'models.table.acrossworker': '跨 Worker 推理', + 'models.table.acrossworker': '跨节点推理', 'models.table.cpuoffload': 'CPU 卸载', 'models.table.layers': '层', 'models.form.backend': '后端', @@ -90,7 +89,7 @@ export default { 'models.form.backend.mindie': '用于非 GGUF 格式模型,仅支持昇腾 910B 和 310P。', 'models.form.search.gguftips': - '当 macOS 或 Windows 作 Worker 时勾选 GGUF(搜索语音模型时取消勾选)', + '当 macOS 或 Windows 作节点时勾选 GGUF(搜索语音模型时取消勾选)', 'models.form.button.addlabel': '添加标签', 'models.filter.category': '按类别筛选', 'models.list.more.logs': '查看更多', diff --git a/src/locales/zh-CN/no-result.ts b/src/locales/zh-CN/no-result.ts index 1e235f3f..5f8c68ed 100644 --- a/src/locales/zh-CN/no-result.ts +++ b/src/locales/zh-CN/no-result.ts @@ -7,12 +7,12 @@ export default { 'noresult.deployments.subTitle': '您还没有部署任何模型,点击下方按钮即可开始。', 'noresult.gpus.title': '当前未检测到 GPU 设备', - 'noresult.gpus.subTitle': '请确认 Worker 状态是否正常。', + 'noresult.gpus.subTitle': '请确认节点状态是否正常。', 'noresult.gpus.nofound': '未找到匹配的 GPU 设备', - 'noresult.workers.title': '暂无 Worker', - 'noresult.workers.subTitle': '当前集群中没有任何 Worker。', - 'noresult.workers.nofound': '未找到匹配的 Worker', - 'noresult.workers.button.add': '前往添加 Worker', + 'noresult.workers.title': '暂无节点', + 'noresult.workers.subTitle': '当前集群中没有任何节点', + 'noresult.workers.nofound': '未找到匹配的节点', + 'noresult.workers.button.add': '前往添加节点', 'noresult.modelfiles.title': '暂无模型文件', 'noresult.modelfiles.subTitle': '尚未添加任何模型文件。', 'noresult.modelfiles.nofound': '未找到匹配的模型文件', diff --git a/src/locales/zh-CN/resources.ts b/src/locales/zh-CN/resources.ts index b412d60c..5c5674d5 100644 --- a/src/locales/zh-CN/resources.ts +++ b/src/locales/zh-CN/resources.ts @@ -1,10 +1,11 @@ export default { 'resources.title': '资源', - 'resources.button.create': '添加 Worker', - 'resources.button.edit': '编辑 Worker', + 'resources.button.create': '添加节点', + 'resources.button.edit': '编辑节点', 'resources.button.edittags': '编辑标签', 'resources.button.update': '更新标签', 'resources.nodes': '节点', + 'resources.worker': '节点', 'resources.table.hostname': '主机名', 'resources.table.key.tips': '存在相同的 key.', 'resources.form.label': '标签', @@ -12,15 +13,15 @@ export default { 'resources.form.advanced': '高级', 'resources.form.enablePartialOffload': '允许 CPU 卸载', 'resources.form.placementStrategy': '放置策略', - 'resources.form.workerSelector': 'Worker 选择器', + 'resources.form.workerSelector': '节点选择器', 'resources.form.enableDistributedInferenceAcrossWorkers': - '允许跨 Worker 分布式推理', + '允许跨节点分布式推理', 'resources.form.spread.tips': - '使得集群整体的资源在所有 Worker 之间分配得相对均匀。可能会在单个 Worker 上产生较多资源碎片。', + '使得集群整体的资源在所有节点之间分配得相对均匀。可能会在单个节点上产生较多资源碎片。', 'resources.form.binpack.tips': - '优先考虑整体集群的资源最大化利用,减少 GPU/Worker 上的资源碎片。', + '优先考虑整体集群的资源最大化利用,减少 GPU/节点 上的资源碎片。', 'resources.form.workerSelector.description': - '系统在部署模型实例时,会根据预定义的标签来选择最符合要求的 Worker。', + '系统在部署模型实例时,会根据预定义的标签来选择最符合要求的节点。', 'resources.table.ip': 'IP', 'resources.table.cpu': 'CPU', 'resources.table.memory': '内存', @@ -38,14 +39,14 @@ export default { 'resources.table.total': '总量', 'resources.table.used': '已用', 'resources.table.allocated': '已分配', - 'resources.table.wokers': 'workers', + 'resources.table.wokers': '节点', 'resources.table.unified': '统一内存', 'resources.worker.linuxormaxos': 'Linux 或 macOS', 'resources.worker.add.step1': '获取 Token(在 Server 上运行)', - 'resources.worker.add.step2': '注册 Worker', - 'resources.worker.add.step2.tips': '(在需要添加的 Worker 上运行。)', - 'resources.worker.add.step3': '成功后,刷新 Worker 列表即可看到新的 Worker', + 'resources.worker.add.step2': '注册节点', + 'resources.worker.add.step2.tips': '(在需要添加的节点上运行。)', + 'resources.worker.add.step3': '成功后,刷新节点列表即可看到新的节点。', 'resources.worker.container.supported': '不支持 macOS 和 Windows', 'resources.worker.current.version': '当前版本为 {version}', 'resources.worker.select.command': '选择一个标签生成命令并使用复制按钮复制', @@ -65,7 +66,7 @@ export default { '默认存储目录为 /var/lib/gpustack/cache,或使用 --cache-dir(优先)、--data-dir 指定的目录。', 'resources.modelfiles.retry.download': '重新下载', 'resources.modelfiles.storagePath.holder': '等待下载完成...', - 'resources.filter.worker': '按 Worker 筛选', + 'resources.filter.worker': '按节点筛选', 'resources.filter.source': '按来源筛选', 'resources.filter.status': '按状态筛选', 'resources.modelfiles.delete.tips': '同时从磁盘删除文件', @@ -78,7 +79,7 @@ export default { 'resources.register.worker.step3': '点击页签通用。', 'resources.register.worker.step4': - '选择服务角色 Worker。', + '选择服务角色 节点。', 'resources.register.worker.step5': '输入 Server URL:{url}。', 'resources.register.worker.step6': diff --git a/src/pages/_components/identicon.tsx b/src/pages/_components/identicon.tsx index 1db67b36..44f0b410 100644 --- a/src/pages/_components/identicon.tsx +++ b/src/pages/_components/identicon.tsx @@ -1,4 +1,4 @@ -import jdenticon from 'jdenticon'; +import { update } from 'jdenticon'; import React, { useEffect, useRef } from 'react'; interface IdenticonProps { @@ -13,7 +13,7 @@ const Identicon: React.FC = ({ const icon = useRef(null); useEffect(() => { - jdenticon?.update(icon.current, 'value'); + update(icon.current, value); }, [value]); return ( diff --git a/src/pages/backends/config/index.ts b/src/pages/backends/config/index.ts index f014497c..44db5d50 100644 --- a/src/pages/backends/config/index.ts +++ b/src/pages/backends/config/index.ts @@ -107,7 +107,19 @@ export const getGpuColor = (gpuType: string) => { return 'default'; }; -export const customIcons = ['∑', '∏', '∫', '∂', '∞', 'θ', '∆', '∇']; +export const customIcons = [ + '∑', + '∏', + '∫', + '∂', + '∞', + 'π', + 'θ', + '∆', + '∇', + '≤', + '≥' +]; export const backendFields = [ 'description', diff --git a/src/pages/cluster-management/config/providers.ts b/src/pages/cluster-management/config/providers.ts index 18a0e414..bb348cc4 100644 --- a/src/pages/cluster-management/config/providers.ts +++ b/src/pages/cluster-management/config/providers.ts @@ -35,6 +35,16 @@ export default [ }), group: 'clusters.create.provider.cloud' }, + { + label: 'AWS', + locale: false, + disabled: true, + value: ProviderValueMap.AWS, + key: ProviderValueMap.AWS, + icon: icons.AWS, + description: 'cluster.provider.comingsoon', + group: 'clusters.create.provider.cloud' + }, { label: 'Alibaba Cloud', locale: false, @@ -54,15 +64,5 @@ export default [ icon: icons.TencentCloud, description: 'cluster.provider.comingsoon', group: 'clusters.create.provider.cloud' - }, - { - label: 'AWS', - locale: false, - disabled: true, - value: ProviderValueMap.AWS, - key: ProviderValueMap.AWS, - icon: icons.AWS, - description: 'cluster.provider.comingsoon', - group: 'clusters.create.provider.cloud' } ]; diff --git a/src/pages/cluster-management/hooks/use-cluster-columns.tsx b/src/pages/cluster-management/hooks/use-cluster-columns.tsx index cc8537e6..45a186ca 100644 --- a/src/pages/cluster-management/hooks/use-cluster-columns.tsx +++ b/src/pages/cluster-management/hooks/use-cluster-columns.tsx @@ -67,7 +67,7 @@ const useClusterColumns = ( render: (value: number) => {value} }, { - title: 'Workers', + title: intl.formatMessage({ id: 'resources.nodes' }), dataIndex: 'workers', span: 3, render: (value: number, record: ClusterListItem) => ( diff --git a/src/pages/cluster-management/hooks/use-pools-columns.tsx b/src/pages/cluster-management/hooks/use-pools-columns.tsx index a8310b31..0821d896 100644 --- a/src/pages/cluster-management/hooks/use-pools-columns.tsx +++ b/src/pages/cluster-management/hooks/use-pools-columns.tsx @@ -122,7 +122,7 @@ const usePoolsColumns = ( ) }, { - title: 'Workers', + title: intl.formatMessage({ id: 'resources.nodes' }), dataIndex: 'replicas', span: 6, key: 'replicas', diff --git a/src/pages/llmodels/download/target-form.tsx b/src/pages/llmodels/download/target-form.tsx index 85992761..c33a9e77 100644 --- a/src/pages/llmodels/download/target-form.tsx +++ b/src/pages/llmodels/download/target-form.tsx @@ -118,7 +118,7 @@ const TargetForm: React.FC = forwardRef((props, ref) => { rules={[ { required: true, - message: getRuleMessage('select', 'worker', false) + message: getRuleMessage('select', 'resources.worker') } ]} > @@ -133,7 +133,7 @@ const TargetForm: React.FC = forwardRef((props, ref) => { } }} maxTagCount={1} - label="Worker" + label={intl.formatMessage({ id: 'resources.worker' })} options={workerOptions} showCheckedStrategy="SHOW_CHILD" getPopupContainer={(triggerNode) => triggerNode.parentNode} diff --git a/src/pages/resources/components/workers.tsx b/src/pages/resources/components/workers.tsx index fd7d0072..15bbe11e 100644 --- a/src/pages/resources/components/workers.tsx +++ b/src/pages/resources/components/workers.tsx @@ -40,7 +40,7 @@ const Workers: React.FC = () => { } = useTableFetch({ fetchAPI: queryWorkersList, deleteAPI: deleteWorker, - contentForDelete: 'worker', + contentForDelete: 'resources.worker', watch: true, API: WORKERS_API }); @@ -240,7 +240,7 @@ const Workers: React.FC = () => { /> ]} header={{ - title: 'Workers', + title: intl.formatMessage({ id: 'resources.nodes' }), style: { paddingInline: 'var(--layout-content-header-inlinepadding)' }, diff --git a/src/pages/resources/hooks/use-files-columns.tsx b/src/pages/resources/hooks/use-files-columns.tsx index eb536a2e..8609cb6a 100644 --- a/src/pages/resources/hooks/use-files-columns.tsx +++ b/src/pages/resources/hooks/use-files-columns.tsx @@ -286,7 +286,7 @@ const useFilesColumns = (props: { } }, { - title: 'Worker', + title: intl.formatMessage({ id: 'resources.worker' }), dataIndex: 'worker_name', ellipsis: { showTitle: false diff --git a/src/pages/resources/hooks/use-gpu-columns.tsx b/src/pages/resources/hooks/use-gpu-columns.tsx index b2ceca29..cc92c1cd 100644 --- a/src/pages/resources/hooks/use-gpu-columns.tsx +++ b/src/pages/resources/hooks/use-gpu-columns.tsx @@ -73,7 +73,7 @@ const useGPUColumns = (props: { ) }, { - title: 'Worker', + title: intl.formatMessage({ id: 'resources.worker' }), dataIndex: 'worker_name', ellipsis: { showTitle: false diff --git a/src/pages/resources/hooks/use-instances-columns.tsx b/src/pages/resources/hooks/use-instances-columns.tsx index 9abd4357..26cec11d 100644 --- a/src/pages/resources/hooks/use-instances-columns.tsx +++ b/src/pages/resources/hooks/use-instances-columns.tsx @@ -60,7 +60,8 @@ const renderGpuIndexs = (gpuIndexes: number[]) => { const distributeCols: ColumnProps[] = [ { - title: 'Worker', + title: 'resources.worker', + locale: true, key: 'worker_name', style: { wordBreak: 'break-word' @@ -310,7 +311,7 @@ const useInstanceColumns = (props: { ) }, { - title: 'Worker', + title: intl.formatMessage({ id: 'resources.worker' }), dataIndex: 'worker_name', render: (text: string, record: ListItem) => ( {text} diff --git a/src/pages/resources/index.tsx b/src/pages/resources/index.tsx index 026f1280..3505e50d 100644 --- a/src/pages/resources/index.tsx +++ b/src/pages/resources/index.tsx @@ -29,7 +29,7 @@ const Resources = () => { const items: TabsProps['items'] = [ { key: 'workers', - label: 'Workers', + label: 'resources.nodes', children: }, {