@senspond

>

빅데이터/AI 🍎>데이터 사이언스

Based StyleGAN2 Model Windows torch.utils.cpp_extension, C++ fused ninja Error...

등록일시 : 2025-02-10 (월) 01:10
업데이트 : 2025-02-10 (월) 02:28
오늘 조회수 : 2
총 조회수 : 33

    Based StyleGAN2 Model Windows torch.utils.cpp_extension, C++ fused ninja Error...



    문제 발단

    StyleGAN2 기반의 모델을 윈도우에서 쓰려고 하니까 이런 오류가 발생했다.


    문제 코드

    import os
    
    import torch
    from torch import nn
    from torch.nn import functional as F
    from torch.autograd import Function
    from torch.utils.cpp_extension import load
    
    
    module_path = os.path.dirname(__file__)
    fused = load(
        "fused",
        sources=[
            os.path.join(module_path, "fused_bias_act.cpp"),
            os.path.join(module_path, "fused_bias_act_kernel.cu"),
        ],
    )


    하드웨어에 종속적인 C++ 네이티브 코드를 쓰고 있어서

    torch.utils.cpp_extension으로 빌드를 해서 하드웨어에 맞는 동적 라이브러리(dll, so)를 생성해야한다.


    #include <torch/extension.h>
    
    torch::Tensor fused_bias_act_op(const torch::Tensor& input, const torch::Tensor& bias, const torch::Tensor& refer,
        int act, int grad, float alpha, float scale);
    
    #define CHECK_CUDA(x) TORCH_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
    #define CHECK_CONTIGUOUS(x) TORCH_CHECK(x.is_contiguous(), #x " must be contiguous")
    #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)
    
    torch::Tensor fused_bias_act(const torch::Tensor& input, const torch::Tensor& bias, const torch::Tensor& refer,
        int act, int grad, float alpha, float scale) {
        CHECK_CUDA(input);
        CHECK_CUDA(bias);
    
        return fused_bias_act_op(input, bias, refer, act, grad, alpha, scale);
    }
    
    PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
        m.def("fused_bias_act", &fused_bias_act, "fused bias act (CUDA)");
    }


    과정

    우선 C++ 컴파일러가 필요하다.

    CalledProcessError: Command '['where', 'cl']' returned non-zero exit status 1.




    C++ 컴파일러에는 GCC컴파일러랑 CL컴파일러 등이 있는데,

    CL컴파일러로 컴파일 해야 하는 코드인 것 같다.




    아무튼 필요한 건 CL컴파일러다.


    지원되는 최신 Visual C++ 재배포 가능 패키지 다운로드 | Microsoft Learn




    설치하고 나면 재부팅해야 한다.


    C++/CLI build tools.





    C++ 컴파일러가 필요하니 개별 구성 요소 선택하고

    v142 C++/CLI build tools. 최신 버전으로 체크하고 설치한다.


    C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64\cl.exe


    윈도우 환경변수 path에 아래 경로를 등록한다.

    C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64\






    IDE를 껏다가 키고 다시 시도해본다.




    unsupported Microsoft Visual Studio version! 이런 메시지랑

    ninja -v 커맨드를 수행할 수 없다는 오류.…


    Releases · ninja-build/ninja




    결론

    해결 방법을 찾지 못했다. 하지만 여기까지 과정을 누군가를 위해 남겨놓는다.

    Visual Studio 2017 또는 2019 버전으로 CL컴파일러와 ninja를 호환되게 설치하면 해결이 될지는 모르겠지만,

    거기까지 해보고 싶지 않았다. 그냥 리눅스에서…


    AI 관련 개발 환경은 리눅스에서 하는 것이 정신건강에 좋은것 같다.

    Mac에서도 종종 오류가 많고, MPS장치는 GPU가속을 할 수가 없는 경우가 많고

    윈도우에서도 이렇게 설정이 어려운 경우가 많다. 리눅스가 제일 깔끔하다.


    senspond

    안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.

    댓글 ( 0 )

    카테고리내 관련 게시글

    현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다

    @senspond

    >

    빅데이터/AI 🍎>데이터 사이언스

    • [현재글] Based StyleGAN2 Model Windows torch.utils.cpp_extension, C++ fused ninja Error...

      Based StyleGAN2 Model Windows torch.utils.cpp_extension, C++ fused ninja Error...
        2025-02-10 (월) 01:10
      1. Fashion MNIST MLP, CNN, LSTM, CNN-LSTM 등 6가지 모델로 이미지 분류해보기

        Fashion MNIST MLP, CNN, LSTM, CNN-LSTM 등 6가지 모델로 이미지 분류해보고 적어본 실험 내용입니다.
          2024-04-13 (토) 03:20
        1. 두 이미지간의 유사도 측정 SSIM, LPIPS 평가지표와 파이썬 구현

          두 이미지간의 유사도 측정 SSIM, LPIPS 평가지표와 파이썬 구현방법을 정리해봤습니다.
            2025-03-02 (일) 06:41
          1. GAN의 문제점과 PGGAN 논문 리뷰

            PGGAN이라는 논문을 읽고 공부한 내용을 정리해 본 글입니다.
              2024-04-03 (수) 07:25