diff --git a/src/locales/en-US/clusters.ts b/src/locales/en-US/clusters.ts index c4ace08d..3a79308a 100644 --- a/src/locales/en-US/clusters.ts +++ b/src/locales/en-US/clusters.ts @@ -81,5 +81,6 @@ Same applies to the /opt/dtk directory.`, 'clusters.addworker.extraVolume.holder': 'e.g. /data/models (path must start with /)', 'clusters.addworker.vendorNotes.title': 'Notes for {vendor} Device', - 'clusters.button.genToken': 'Generate Token' + 'clusters.button.genToken': 'Generate Token', + 'clusters.addworker.amdNotes-01': `If the /opt/rocm directory does not exist, please create a symbolic link pointing to the ROCm installed path: ln -s /path/to/rocm /opt/rocm.` }; diff --git a/src/locales/ja-JP/clusters.ts b/src/locales/ja-JP/clusters.ts index bf993677..2218af5f 100644 --- a/src/locales/ja-JP/clusters.ts +++ b/src/locales/ja-JP/clusters.ts @@ -81,7 +81,8 @@ Same applies to the /opt/dtk directory.`, 'clusters.addworker.extraVolume.holder': 'e.g. /data/models (path must start with /)', 'clusters.addworker.vendorNotes.title': 'Notes for {vendor} Device', - 'clusters.button.genToken': 'Generate Token' + 'clusters.button.genToken': 'Generate Token', + 'clusters.addworker.amdNotes-01': `If the /opt/rocm directory does not exist, please create a symbolic link pointing to the ROCm installed path: ln -s /path/to/rocm /opt/rocm.` }; // ========== To-Do: Translate Keys (Remove After Translation) ========== @@ -153,5 +154,6 @@ Same applies to the /opt/dtk directory.`, // 66. 'clusters.addworker.autoDetect': 'Auto-detect', // 67. 'clusters.addworker.extraVolume.holder': 'e.g. /data/models (path must start with /)' // 68. 'clusters.addworker.vendorNotes.title': 'Notes for {vendor} Device', -// 69. 'clusters.button.genToken': 'Generate Token' +// 69. 'clusters.button.genToken': 'Generate Token', +// 70. 'clusters.addworker.amdNotes-01': `If the /opt/rocm directory does not exist, please create a symbolic link pointing to the ROCm installed path: ln -s /path/to/rocm /opt/rocm.` // ========== End of To-Do List ========== diff --git a/src/locales/ru-RU/clusters.ts b/src/locales/ru-RU/clusters.ts index 0263f4d1..34ee9167 100644 --- a/src/locales/ru-RU/clusters.ts +++ b/src/locales/ru-RU/clusters.ts @@ -81,5 +81,10 @@ export default { 'clusters.addworker.extraVolume.holder': 'напр. /data/models (путь должен начинаться с /)', 'clusters.addworker.vendorNotes.title': 'Примечания для устройств {vendor}', - 'clusters.button.genToken': 'Сгенерировать токен' + 'clusters.button.genToken': 'Сгенерировать токен', + 'clusters.addworker.amdNotes-01': `If the /opt/rocm directory does not exist, please create a symbolic link pointing to the ROCm installed path: ln -s /path/to/rocm /opt/rocm.` }; + +// ========== To-Do: Translate Keys (Remove After Translation) ========== +// 1. 'clusters.addworker.amdNotes-01': `If the /opt/rocm directory does not exist, please create a symbolic link pointing to the ROCm installed path: ln -s /path/to/rocm /opt/rocm.` +// ================================================================ diff --git a/src/locales/zh-CN/clusters.ts b/src/locales/zh-CN/clusters.ts index ea79fc91..836a277f 100644 --- a/src/locales/zh-CN/clusters.ts +++ b/src/locales/zh-CN/clusters.ts @@ -79,5 +79,7 @@ export default { 'clusters.addworker.extraVolume.holder': '例如:/data/models(路径需以 / 开头)', 'clusters.addworker.vendorNotes.title': '{vendor}设备注意事项', - 'clusters.button.genToken': '生成令牌' + 'clusters.button.genToken': '生成令牌', + 'clusters.addworker.amdNotes-01': + '如果 /opt/rocm 目录不存在,请创建一个指向已安装 ROCm 路径的符号链接:ln -s /path/to/rocm /opt/rocm。' }; diff --git a/src/pages/resources/config/gpu-driver.ts b/src/pages/resources/config/gpu-driver.ts index 1c262a23..d8e4aeed 100644 --- a/src/pages/resources/config/gpu-driver.ts +++ b/src/pages/resources/config/gpu-driver.ts @@ -57,7 +57,7 @@ export const GPUsConfigs: Record< [GPUDriverMap.ILUVATAR]: { label: ManufacturerMap[GPUDriverMap.ILUVATAR], value: GPUDriverMap.ILUVATAR, - runtime: 'iluvatar', // TODO: confirm runtime name + runtime: 'iluvatar', driver: 'ixsmi' }, [GPUDriverMap.CAMBRICON]: { @@ -142,7 +142,7 @@ const setImageArgs = (params: any) => { --token ${params.token} \\`; }; -// avaliable for NVIDIA、AMD、MThreads +// avaliable for NVIDIA、MThreads const registerWorker = (params: { server: string; tag: string; @@ -162,6 +162,27 @@ const registerWorker = (params: { ${params.workerIP ? `--advertise-address ${params.workerIP} \\` : ''}`; }; +// avaliable for AMD +const registerAMDWorker = (params: { + server: string; + tag: string; + token: string; + image: string; + gpu: string; + workerIP?: string; + modelDir?: string; +}) => { + const config = GPUsConfigs[params.gpu]; + const commonArgs = setNormalArgs(params); + const imageArgs = setImageArgs(params); + // remove empty enter lines and trailing backslash + return `${commonArgs} + --volume /opt/rocm:/opt/rocm:ro \\ + --runtime ${config.runtime} \\ + ${imageArgs} + ${params.workerIP ? `--advertise-address ${params.workerIP} \\` : ''}`; +}; + // avaliable for Ascend const registerAscendWorker = (params: { server: string; @@ -264,7 +285,7 @@ const registerCambriconWorker = (params: { export const registerAddWokerCommandMap = { [GPUDriverMap.NVIDIA]: registerWorker, - [GPUDriverMap.AMD]: registerWorker, + [GPUDriverMap.AMD]: registerAMDWorker, [GPUDriverMap.ASCEND]: registerAscendWorker, [GPUDriverMap.HYGON]: registerHygonWorker, [GPUDriverMap.ILUVATAR]: registerIluvatarWorker, @@ -275,7 +296,7 @@ export const registerAddWokerCommandMap = { export const AddWorkerDockerNotes: Record = { [GPUDriverMap.NVIDIA]: [], - [GPUDriverMap.AMD]: [], + [GPUDriverMap.AMD]: ['clusters.addworker.amdNotes-01'], [GPUDriverMap.MOORE_THREADS]: [], [GPUDriverMap.ASCEND]: [], [GPUDriverMap.HYGON]: [