Skip to content

Commit c62963f

Browse files
author
zuolve.lai
committed
feat: support iluvatar backend qwen3 0.6b run through
1 parent 4d97206 commit c62963f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1233
-43
lines changed

CMakeLists.txt

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
33

44
option(USE_NPU "Enable NPU support" OFF)
55
option(USE_MLU "Enable MLU support" OFF)
6+
option(USE_ILU "Enable ILU support" OFF)
67
option(USE_CUDA "Enable CUDA support" OFF)
78
add_compile_definitions(YLT_ENABLE_IBV)
89
add_definitions(-DYLT_ENABLE_IBV)
@@ -105,7 +106,7 @@ set(CMAKE_CXX_STANDARD 20)
105106
set(CMAKE_CXX_STANDARD_REQUIRED ON)
106107
set(CMAKE_CXX_EXTENSIONS ON)
107108

108-
if(USE_NPU OR USE_CUDA)
109+
if(USE_NPU OR USE_CUDA OR USE_ILU)
109110
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
110111
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
111112
elseif(USE_MLU)
@@ -208,6 +209,19 @@ if(USE_CUDA)
208209
message(STATUS "TORCH_CUDA_ARCH_LIST: ${TORCH_CUDA_ARCH_LIST}")
209210
endif()
210211

212+
if(USE_ILU)
213+
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules;${CMAKE_MODULE_PATH}")
214+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
215+
set(CMAKE_CUDA_ARCHITECTURES "ivcore11")
216+
set(WARNINGS_AS_ERRORS OFF)
217+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
218+
add_definitions(
219+
-Wno-c++11-narrowing
220+
-Wno-thread-safety-analysis
221+
)
222+
endif()
223+
endif()
224+
211225
# configure vcpkg
212226
# have to set CMAKE_TOOLCHAIN_FILE before first project call.
213227
# if (DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
@@ -425,6 +439,23 @@ if(USE_CUDA)
425439
)
426440
endif()
427441

442+
if(USE_ILU)
443+
add_definitions(-DUSE_ILU)
444+
set(CMAKE_VERBOSE_MAKEFILE ON)
445+
include_directories(
446+
$ENV{PYTHON_INCLUDE_PATH}
447+
$ENV{PYTORCH_INSTALL_PATH}/include
448+
$ENV{PYTORCH_INSTALL_PATH}/include/torch/csrc/api/include
449+
$ENV{IXFORMER_INSTALL_PATH}/csrc/include/ixformer
450+
)
451+
452+
link_directories(
453+
$ENV{PYTHON_LIB_PATH}
454+
$ENV{PYTORCH_INSTALL_PATH}/lib
455+
$ENV{IXFORMER_INSTALL_PATH}
456+
)
457+
endif()
458+
428459
# check if USE_CXX11_ABI is set correctly
429460
# if (DEFINED USE_CXX11_ABI)
430461
# parse_make_options(${TORCH_CXX_FLAGS} "TORCH_CXX_FLAGS")

setup.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,11 @@ def get_torch_root_path():
109109
except ImportError:
110110
return None
111111

112-
def get_torch_mlu_root_path():
112+
def get_ixformer_root_path():
113113
try:
114-
import torch_mlu
114+
import ixformer
115115
import os
116-
return os.path.dirname(os.path.abspath(torch_mlu.__file__))
116+
return os.path.dirname(os.path.abspath(ixformer.__file__))
117117
except ImportError:
118118
return None
119119

@@ -229,7 +229,15 @@ def set_cuda_envs():
229229
os.environ["CUDA_TOOLKIT_ROOT_DIR"] = "/usr/local/cuda"
230230
os.environ["NCCL_ROOT"] = get_nccl_root_path()
231231
os.environ["NCCL_VERSION"] = "2"
232-
232+
233+
def set_ilu_envs():
234+
os.environ["PYTHON_INCLUDE_PATH"] = get_python_include_path()
235+
os.environ["PYTHON_LIB_PATH"] = get_torch_root_path()
236+
os.environ["LIBTORCH_ROOT"] = get_torch_root_path()
237+
os.environ["PYTORCH_INSTALL_PATH"] = get_torch_root_path()
238+
os.environ["CUDA_TOOLKIT_ROOT_DIR"] = "/usr/local/corex"
239+
os.environ["IXFORMER_INSTALL_PATH"] = get_ixformer_root_path()
240+
233241
class CMakeExtension(Extension):
234242
def __init__(self, name: str, path: str, sourcedir: str = "") -> None:
235243
super().__init__(name, sources=[])
@@ -280,8 +288,7 @@ def run(self):
280288
for ext in self.extensions:
281289
self.build_extension(ext)
282290
except Exception as e:
283-
print("ERROR: Build failed.")
284-
print(f"Details: {e}")
291+
print("Build failed.")
285292
exit(1)
286293

287294
def build_extension(self, ext: CMakeExtension):
@@ -313,7 +320,7 @@ def build_extension(self, ext: CMakeExtension):
313320
f"-DDEVICE_ARCH={self.arch.upper()}",
314321
f"-DINSTALL_XLLM_KERNELS={'ON' if self.install_xllm_kernels else 'OFF'}",
315322
]
316-
323+
317324
if self.device == "a2" or self.device == "a3":
318325
cmake_args += ["-DUSE_NPU=ON"]
319326
# set npu environment variables
@@ -328,6 +335,9 @@ def build_extension(self, ext: CMakeExtension):
328335
f"-DCMAKE_CUDA_ARCHITECTURES={cuda_architectures}"]
329336
# set cuda environment variables
330337
set_cuda_envs()
338+
elif self.device == "ilu":
339+
cmake_args += ["-DUSE_ILU=ON"]
340+
set_ilu_envs()
331341
else:
332342
raise ValueError("Please set --device to a2 or a3 or mlu or cuda.")
333343

@@ -351,6 +361,7 @@ def build_extension(self, ext: CMakeExtension):
351361

352362
build_args = ["--config", build_type]
353363
max_jobs = os.getenv("MAX_JOBS", str(os.cpu_count()))
364+
# max_jobs="2"
354365
build_args += ["-j" + max_jobs]
355366

356367
env = os.environ.copy()
@@ -572,7 +583,7 @@ def pre_build():
572583
idx = sys.argv.index('--device')
573584
if idx + 1 < len(sys.argv):
574585
device = sys.argv[idx+1].lower()
575-
if device not in ('a2', 'a3', 'mlu', 'cuda'):
586+
if device not in ('a2', 'a3', 'mlu', 'cuda', 'ilu'):
576587
print("Error: --device must be a2 or a3 or mlu (case-insensitive)")
577588
sys.exit(1)
578589
# Remove the arguments so setup() doesn't see them

third_party/CMakeLists.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,32 @@ target_include_directories(mooncake_store PUBLIC
1919
${CMAKE_CURRENT_SOURCE_DIR}/Mooncake/mooncake-transfer-engine/include
2020
)
2121

22+
if(USE_ILU)
23+
if(TARGET cpprest)
24+
set_target_properties(cpprest PROPERTIES
25+
CXX_STANDARD 20
26+
CXX_STANDARD_REQUIRED ON
27+
CXX_EXTENSIONS OFF
28+
)
29+
endif()
30+
if(TARGET transfer_engine)
31+
target_compile_options(transfer_engine PRIVATE -std=c++20)
32+
set_target_properties(transfer_engine PROPERTIES
33+
CXX_STANDARD 20
34+
CXX_STANDARD_REQUIRED ON
35+
)
36+
message(STATUS "Set C++20 for transfer_engine target")
37+
endif()
38+
if(TARGET SMHasherSupport)
39+
set_target_properties(SMHasherSupport PROPERTIES
40+
CXX_STANDARD 11
41+
CXX_STANDARD_REQUIRED ON
42+
CXX_EXTENSIONS OFF
43+
)
44+
message(STATUS "SMHasherSupport target found and configured")
45+
else()
46+
message(WARNING "SMHasherSupport target not found after adding smhasher")
47+
endif()
48+
endif()
49+
2250
target_link_libraries(mooncake_store PUBLIC transfer_engine cachelib_memory_allocator)

third_party/brpc

Submodule brpc updated from 67d6372 to 415f537

third_party/hccl_transfer

Submodule hccl_transfer updated from 1a7d59f to 4fd9603

third_party/minja

Submodule minja updated from cf9734a to 1d2b82b

third_party/xllm_ops

Submodule xllm_ops updated from 797a0cb to a8e8b15

xllm/core/distributed_runtime/worker_server.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/* Copyright 2025 The xLLM Authors. All Rights Reserved.
2+
/* Copyright 2025 The xLLM Authors. All Rights Reserved.
23
34
Licensed under the Apache License, Version 2.0 (the "License");
45
you may not use this file except in compliance with the License.

xllm/core/framework/batch/batch_input_builder.cpp

100755100644
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ void BatchInputBuilder::process_sequences_multithreaded() {
207207
state_.q_seq_lens.insert(state_.q_seq_lens.end(),
208208
state.q_seq_lens.begin(),
209209
state.q_seq_lens.end());
210-
#elif defined(USE_MLU) || defined(USE_CUDA)
210+
#elif defined(USE_MLU) || defined(USE_CUDA) || defined(USE_ILU)
211211
int32_t seq_len_offset = state_.seq_lens.back();
212212
// skip the first element which is 0
213213
for (size_t i = 1; i < state.seq_lens.size(); ++i) {
@@ -293,7 +293,7 @@ void BatchInputBuilder::process_single_sequence(
293293
#if defined(USE_NPU)
294294
state.seq_lens.push_back(seq_len + offset);
295295
state.q_seq_lens.push_back(q_seq_len);
296-
#elif defined(USE_MLU) || defined(USE_CUDA)
296+
#elif defined(USE_MLU) || defined(USE_CUDA) || defined(USE_ILU)
297297
state.seq_lens.push_back(state.seq_lens.back() + seq_len + offset);
298298
state.q_seq_lens.push_back(state.q_seq_lens.back() + q_seq_len);
299299
#endif
@@ -527,7 +527,7 @@ void BatchInputBuilder::padding_decode_batch_size(
527527
#if defined(USE_NPU)
528528
state_.seq_lens.push_back(num_decoding_tokens);
529529
state_.q_seq_lens.push_back(num_decoding_tokens);
530-
#elif defined(USE_MLU) || defined(USE_CUDA)
530+
#elif defined(USE_MLU) || defined(USE_CUDA) || defined(USE_ILU)
531531
state_.seq_lens.push_back(state_.seq_lens.back() + num_decoding_tokens);
532532
state_.q_seq_lens.push_back(state_.q_seq_lens.back() +
533533
num_decoding_tokens);

xllm/core/framework/batch/batch_input_builder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class BatchInputBuilder {
8585
#if defined(USE_NPU)
8686
std::vector<int32_t> seq_lens;
8787
std::vector<int32_t> q_seq_lens;
88-
#elif defined(USE_MLU) || defined(USE_CUDA)
88+
#elif defined(USE_MLU) || defined(USE_CUDA) || defined(USE_ILU)
8989
std::vector<int32_t> seq_lens = {0}; // cu_seq_lens
9090
std::vector<int32_t> q_seq_lens = {0}; // q_cu_seq_len
9191
#endif

0 commit comments

Comments
 (0)