NPU 환경에서 mmcv 설치 방법

발행: (2026년 1월 12일 오후 07:46 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

설명

오늘 Ascend GPU에서 musetalk 모델을 실행하려고 했지만, mmcv 때문에 많은 문제가 발생했습니다. 경험을 정리해서 여기서 공유하고자 합니다.

내 환경

  • NPU: 910b2
  • OS: aarch64 Ubuntu 22.04.5 LTS

이야기

pip으로 mmcv를 설치하려고 시도했을 때 No module named mmcv._ext 오류가 발생했습니다. 이 오류는 소스 코드를 직접 컴파일해야만 해결할 수 있었습니다. 컴파일은 CPU 환경에서는 성공했지만 NPU 환경에서는 실패했습니다.

CPU로 컴파일하기

GitHub에서 mmcv 코드를 다운로드하고, npu-dev 브랜치를 사용합니다:

https://github.com/open-mmlab/mmcv/tree/npu-dev

mmcv 컴파일 스크린샷

setup.py 수정하기

21번째 줄

# cmd_class = {'build_ext': BuildExtension}
cmd_class = {'build_ext': BuildExtension.with_options(use_ninja=False)}

273‑300번째 줄

elif (os.getenv('FORCE_NPU', '0') == '1'):
    print(f'Compiling {ext_name} only with CPU and NPU')
    try:
        from torch_npu.utils.cpp_extension import NpuExtension
        define_macros += [('MMCV_WITH_NPU', None)]
        extension = NpuExtension
    except Exception:
        raise ImportError('can not find any torch_npu')
    # src
    op_files = glob.glob('./mmcv/ops/csrc/pytorch/*.cpp') + \
        glob.glob('./mmcv/ops/csrc/pytorch/cpu/*.cpp') + \
        glob.glob('./mmcv/ops/csrc/common/npu/*.cpp') + \
        glob.glob('./mmcv/ops/csrc/pytorch/npu/*.cpp')
    include_dirs.append(os.path.abspath('./mmcv/ops/csrc/common'))
    include_dirs.append(os.path.abspath('./mmcv/ops/csrc/common/npu'))
    if 'cxx' not in extra_compile_args:
        extra_compile_args['cxx'] = {}
    extra_compile_args['cxx'] += ['-std=c++17', '-Wall']

else:
    print(f'Compiling {ext_name} only with CPU')
    op_files = glob.glob('./mmcv/ops/csrc/pytorch/*.cpp') + \
        glob.glob('./mmcv/ops/csrc/pytorch/cpu/*.cpp')
    extension = CppExtension
    include_dirs.append(os.path.abspath('./mmcv/ops/csrc/common'))
    if 'cxx' not in extra_compile_args:
        extra_compile_args['cxx'] = {}
    extra_compile_args['cxx'] += ['-std=c++17', '-Wall']

빌드 명령어

전제 조건: 명령을 실행하기 전에 torchtorchvision을 설치하십시오.

MMCV_WITH_OPS=1 MAX_JOBS=40 python setup.py build_ext

운이 좋다면 다음도 시도해 볼 수 있습니다:

MMCV_WITH_OPS=1 MAX_JOBS=40 python setup.py develop

참고: develop은 site‑packages 폴더에 심볼릭 링크를 생성합니다.

mmcv 모듈을 확인합니다:

from mmcv.ops import MultiScaleDeformableAttention

실제 설치 명령어:

MMCV_WITH_OPS=1 MAX_JOBS=40 python setup.py install

주의 사항

_ext.cpython-310-aarch64-linux-gnu.so 파일이 mmcv 디렉터리에 있지 않을 수 있으며, 대신 빌드 디렉터리에 존재합니다. 이 경우 직접 심볼릭 링크를 만들어 주어야 합니다.

Back to Blog

관련 글

더 보기 »

안녕, 뉴비 여기요.

안녕! 나는 다시 S.T.E.M. 분야로 돌아가고 있어. 에너지 시스템, 과학, 기술, 공학, 그리고 수학을 배우는 것을 즐겨. 내가 진행하고 있는 프로젝트 중 하나는...