@senspond
>
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 커맨드를 수행할 수 없다는 오류.…
해결 방법을 찾지 못했다. 하지만 여기까지 과정을 누군가를 위해 남겨놓는다.
Visual Studio 2017 또는 2019 버전으로 CL컴파일러와 ninja를 호환되게 설치하면 해결이 될지는 모르겠지만,
거기까지 해보고 싶지 않았다. 그냥 리눅스에서…
AI 관련 개발 환경은 리눅스에서 하는 것이 정신건강에 좋은것 같다.
Mac에서도 종종 오류가 많고, MPS장치는 GPU가속을 할 수가 없는 경우가 많고
윈도우에서도 이렇게 설정이 어려운 경우가 많다. 리눅스가 제일 깔끔하다.
안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.
현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다
@senspond
>