본문 바로가기
VisualStudio.C++.C#

PyTorch . Visual C++ 에서 LibTorch 개발 환경 설정

by i.got.it 2024. 8. 29.

 

 

 

개요 

PyTorch 의 기능들을  C++ 에서 사용 가능하게 해주는 라이브러리인 LibTorch 다운로드 하고 VC++ 2022 에서 LibTorch 개발 환경 셋팅. 

 

VC++ 에서 개발환경 셋팅이라 함은 프로젝트 설정 옵션에서 Include Directories , Library Directories, Linker Input 부분에 경로 추가 설정하는 게 전부이다.  LibTorch 가 dll 형식이므로  통상적인 dll 활용 위한 VC++ 에서 해줘야하는 설정 이며  간단하게 달성됨. 

 

 

 

LibTorch 라이브러리 다운로드 

다운로드 방법 

 

https://pytorch.org/ 

 

상기 페이지에서 보이는 INSTALL PYTORCH 에서 옵선 선택하여 보이는 Release 버전, Debug 버전 압축파일 2개 모두 다운로드 하고 압축푼다. 

 

아래 선택은 GPU 에서 실행하지 않고 CPU 에서만 실행가능한 버전 선택한 예 

 

아래 선택은 CUDA12.4 지원되는 LibTorch 선택한 예. 

 

 

 

다운로드 받은 압축파일 차단해제하고 나서 적당한 폴더에  압축 푼다. 

 

CPU , GPU 지원 파일 모두 다운로드는 했는 먼저 사용할것은  CPU 만 으로 처리하는 것부터  먼저 해볼려고 cpu 버전만 압축해제 해둠. 

 

 

 

LibTorch 위와 같이 압축해제 했으면 이후 처리는 VC++ (본예에서는 VC++2022 ) 프로젝트 속성 설정에서 위 압축해제한 폴더 하위에 있는 폴더 include , lib 를 연결 해주면 된다. 

 

 

 

VC++ 프로젝트 속성 설정하기 

 

- LibTorch 라이브러리 활용할 VC++ 프로젝트 생성하자. 가장 간단한 Console Application 프로젝트 만들자.

- 생성된 프로젝트 의 Properties 창 열어서  아래 설정 한다. 

 

 

LibTorch 에 있는  폴더 경로를 프로젝트 속성창에 설정하기 

속성창의 Release 선택한 상태에서 아래 체크한 부분에 경로 설정한다. 

 

경로 추가할 것 2개. LibTorch 압축푼 메인폴더하위의 아래 2개 경로. 

1. /include

 - script.h,library.h 등이 있음.

2. torch/csrc/api/include   

 - all.h, torch.h 등이 있음. 

 

 

 

LibTorch 에 있는  폴더 lib 경로를 프로젝트 속성창에 설정하기 

LibTorch 압축푼 메인폴더하위의 아래 1개 경로. 

 

1. /lib

 - - 여러 *.lib 파일들이 있음. 

 

 

C++ Language Standard 를 C++17  선택 

- LibTorch 버전 2.4.0 에서는 C++17 이상 요구함. 

 

 

 

Linker Input 에 아래 3개 파일 추가 

torch_cpu.lib;c10.lib;torch.lib

 

 

 

 

정상 실행 확인 

 

콘솔 application 프로젝트에 아래처럼 코드 추가하여,  LibTorch 정상 빌드되고 오류없이  실행 되는지 확인. 

 


#include <ATen/ATen.h>
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    at::Tensor tensor = at::ones({ 2, 2 }, at::kInt);
    std::cout << tensor << std::endl;

    return 0;
}

 

 

프로젝트 실행파일(본 에에서는 ConsoleApplication1.exe) 있는 폴더에 필수 DLL 들 복사한다. 

방법 :  LibTorch 의 \lib 폴더 하위에 있는 DLL 파일들(아래 그림에 보이는 5개 dll 파일) 복사해둔다. 본 예제 프로젝트 실행시 필수 요구되는 DLL 들임.   

 

실행결과 

- 상기 코드 빌드하고 실행시키자. 

-  잘 실행됨.  

 

 

 

 

 

 

 

 

VC++ MFC 프로젝트에서 LibTorch 활용시 필수 규칙. 

- LibTorch 헤더파일 include 문을 가장 앞에 둘것. 

 

문제상황 

아래 화면은 VC++ MFC 프로젝트에서 LibTorch 의 헤더 파일중 script.h 를 include 하는 구문을 MFC 의 헤더파일 pch.h include 구문 뒤에 배치하고  컴파일 해보면 오류들이 4천여개나 나온다. 

 

사족 : 이렇게 무지막지하게 오류가 많은 류들은 간단한 조치로 해결되는 경우가 더 많다.  오류내용 하나하나 분석하면서 개별 오류 해결하려고 시도하기 전에 뭔가 내가 한 설정류 부터 점검하는게 빠른 디버깅에 도움된다.  

 

 

 

 

 

 

해결책 

script.h 를 pch.h 전에 include 하면 오류없이 완전하게 빌드된다. 

- 헤더파일 포함 순서 중요한 경우 종종 있음. 

 

 

위와 같이 pch.h 전에 하는 것보다 아예 pch.h 파일내에서 추가하는것도 좋음. 

 

 

여기까지 구축되면 LibTorch 이용하여 PyToch 에서 제공하는 기능들 활용하여 Visual Studio 2022 에서 C++ 코딩 가능한 환경 구축 완료됨. 

 

 

 

 

 

Visual C++ 2022 용 LibTorch Extension 시험 설치 해봄. 결론 : 무용지물

- 본 Extension 은 필수는 아니며,  torch 사용하는 프로젝트 템플릿  만들어 준다.  앞에서 설명했던 경로 설정을 조금 더 편하게 해주는 정도이다. 앞의 수동 설정만으로도  VC++ 프로젝트 에서 torch 활용 가능함. 

 

- LibTorch extension 설치 과정과 진행중 오류 발생 상황 점검 해보려고 설치 해보긴 했다. 

 

결론 : LibTorch extension 은 아무 도움도 안되는 프로그램임. 앞에서 설명한 경로들 수동 설정 간단하게 달성되므로 본 extension   은 시험용으로 설치해보고 나서 삭제하였음. 

 

 

 

 

 

LibTorch Extension 설치 방법

Visual Studio 메뉴 -> Extensions -> Manage Extensions 클릭하여 뜬 아래창에서 우상단에 LoibTorch 로 검색하여 보이는 LibTorch Project (64-bit)  다운로드 한다. 

 

 

extension 다운로드 하고나서 Visual Studio 종료해야 설치 진행됨. 

 

 

설치완료하고 Visual Studio 2022 실행해보면 새 프로젝트 만들기에 TorchProject 만들기 가능한 템플릿 추가됨을 확인 할 수 있다. 

 

 

TorchProject 템플릿 선택하고 프로젝트 생성 시험해봄. 

 

프로젝트 이름 적고 진행시키면 아래 처럼 라이브러리 경로 지정하는 곳에서 지정하면 해당 폴더가 있는데도 오류 뜬다. 

 

 

extension 시험 설치 결론 : LibTorch extension 은 아무 도움도 안되는 프로그램임. 앞에서 설명한 경로들 수동 설정 간단하게 달성되므로 본 extension   은 시험용으로 설치해보고 나서 삭제하였음. 

 

 

 

 

 

상위 정리  

 

 

Visual Studio , Visual C++ 활용 정리.

Visual Studio C++ 활용 Visual Studio Visual C++ / C# 1.설치, 설정 주제 비고. Visual Studio 2010 설치. Visual Studio 2013 (Community)무료 설치. Visaul Studio 2015 (Community)무료 설치. - Visual Studio 2015 버전은 이전 버전대비

igotit.tistory.com

 

 

연관 

 

 

PyTorch . 머신러닝 , 뉴럴넷 라이브러리

PyTorch - 머신러닝 , 딥뉴럴넷 라이브러리. - 자동미분시스템을 기반으로 구축된 심층 신경망(Deep Neural Network, DNN) 제공. - 사용가능 프로그래밍 언어 : 파이썬 , C++ (C++ 용  패키지 명칭 LibTorch)- GP

igotit.tistory.com

 

 

 

 

 


첫 등록 : 2024.08.28 

최종 수정 : 2024.08.29

단축 주소 : https://igotit.tistory.com/5794


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5