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]: [