@senspond

>

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

윈도우 환경에서 WSL로 Tensorflow GPU CUDA 12 version 이상 사용하기

등록일시 : 2024-03-21 (목) 05:17
업데이트 : 2024-03-21 (목) 05:39
오늘 조회수 : 3
총 조회수 : 2878

    윈도우 환경에서 WSL로 Tensorflow GPU CUDA 12 version 이상 사용하는 방법에 대해 정리해본 글입니다.

    문제상황

    파이토치는 윈도우 환경 최신CUDA까지 지원이 되어 문제가 없었는데,

    텐서플로우에서 GPU 가속을 사용하려니 아래와 같은 문제가 있었다.



    텐서플로우 공식사이트에 보면 윈도우 환경에서 GPU지원은 현재 tensorflow 2.10 버전까지 지원하는데CUDA11.2 과 cuDNN 8.1에 호환된다고 명시되어 있다.


    현재 RTX 4060 TI 그래픽 쓰고 있는데, 윈도우 환경에서 호환성 문제로 어쩔 수 없이 리눅스 환경이 필요했다.

    정상적으로 GPU지원이 가능해진다면

    import tensorflow as tf 
    from tensorflow.python.client import device_lib
    
    print(device_lib.list_local_devices() )       # GPU 나와야함
    print(tf.config.list_physical_devices('GPU')) # 목록 나와야함

    여기에 GPU장치가 출력 되어야만 한다.


    세팅방법

    윈도우 / 리눅스 듀얼부팅 하는 방법도 있겠지만, WSL 로 진행을 하였다.


    윈도우에서 WSL 활성화

    윈도우에서 wsl 설치방법은 구글링을 조금만 해봐도 나온다. 대략적인 절차는 다음과 같다.


    1. BIOS 설정에서 가상화 기능켜기

    • 윈도우 기능켜기 Linux용 Windows 하위 시스템, 가상머신플램폼 기능을 켜주고 재부팅

    • wsl 설치



    build-essential 설치

    이하 wsl 우분투(Ubuntu) 환경에 들어가서 진행해준다.

    $ sudo apt update
    $ sudo apt install build-essential


    미니콘다 설치

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    sh Miniconda3-latest-Linux-x86_64.sh


    CUDA 세팅


    WSL 은 리눅스 설치와 다르게 윈도우에 설치한 그래픽카드로 잡히게 된다.

    리눅스에 설치하듯이 그래픽카드 설치하면 안됨.




    텐서플로우(리눅스)


    소스에서 빌드  |  TensorFlow




    파이토치(리눅스)



    텐서플로우 보다 파이토치를 더 많이 다룰 것 같기 때문에 파이토치 2.2 기준으로 둘 다 문제없을 것 같은 CUDA12.1 버전으로 설치하기로 했다.


    pip install tensorflow[and-cuda]==2.15

    리눅스 환경에서 최근 tensorflow버전은 [and-cuda]로 설치하게 되면 CUDA 설정을 자동으로 해준다고 한다. 그런데, 필자의 경우 이상하게 제대로 설치되지 않아서 수동으로 CUDA 세팅을 진행하였다.


    CUDA Toolkit 설치하기

    # 다운로드
    wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
    
    # 설치
    sudo sh cuda_12.1.1_530.30.02_linux.run


    CuDNN 설치하기

    # 다운로드
    wget https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-9.0.0.312_cuda12-archive.tar.xz
    
    # 압축풀기
    tar -xvf cudnn-linux-x86_64-8.9.2.26_cuda12-archive.tar.xz
    
    # 경로 이동
    cd cudnn-linux-x86_64-8.9.2.26_cuda12-archive
    
    # cuda 디렉토리에 복사
    sudo cp include/cudnn* /usr/local/cuda-12.1/include
    sudo cp lib/libcudnn* /usr/local/cuda-12.1/lib64
    
    


    환경변수 등록

    $ sudo vi ~/.bashrc

    export PATH="/usr/local/cuda-12.1/bin:$PATH"
    export LD_LIBRARY_PATH="/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH"

    $ source ~/.bashrc


    확인


    설치한 cuda 버전에 맞게 Build cuda_XX.X 이 출력이 되어야 한다. cuda-12.1을 설치하고 환경변수로 잡아줬기 때문에 cuda_12.1.. 라고 출력되는 것을 확인 할 수 있다.


    텐서플로우 설치

    pip install tensorflow==2.15


    GPU 지원 확인

    python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

    여기에 빈 리스트가 나오지 않으면 된다.




    VSCODE 에서 WSL 연결하기

    1. 비주얼 스튜디오 코드의 마켓 플레이스에서 WSL 플러그인을 설치한다.



    VSCODE에서 Connect to WSL 을 통해 WSL에 연결한다.

    그리고 select 인터프리터로 wsl에서 생성한 미니콘다 가상환경으로 연결한다.



    Your kernel may have been built without NUMA support 라는 문구가 뜨기는 하는데, nvidia개발자 포럼에 찾아보니 WSL로 사용했을 때 뜨는데 메모리 컨트롤러가 하나뿐이므로 메모리 엑세스가 균일하기에 무시해도 무시해도 된다고 한다.

    NUMA Error running Tensorflow on Jetson Tx2 - Jetson & Embedded Systems / Jetson TX2 - NVIDIA Developer Forums


    윈도우 파일탐색기에 WSL 작업폴더 추가



    파일 탐색기에서 네트워크 추가로 작업 경로를 넣어준다.






    senspond

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

    댓글 ( 0 )

    카테고리내 관련 게시글

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

    @senspond

    >

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

    • PIL이미지 <-> numpy, tensor 상호변환, matplotlib 로 이미지시각화 방법 정리

      PIL이미지 <-> numpy, tensor 상호변환, matplotlib 로 이미지시각화 방법 정리를 해본 글입니다
        2024-03-20 (수) 12:59
      1. 파이토치(torch) 기본 함수와 Tensor 클래스의 메소드 정리

        파이토치(torch) 기본 함수와 Tensor 클래스의 메소드들을 정리해 본 글입니다. 워낙 종류가 많아서 전부 다 정리할 수는 없지만 자주 사용하는 것들을 추려서 정리해봤습니다.
          2024-03-21 (목) 01:17
        1. [현재글] 윈도우 환경에서 WSL로 Tensorflow GPU CUDA 12 version 이상 사용하기

          윈도우 환경에서 WSL로 Tensorflow GPU CUDA 12 version 이상 사용하는 방법에 대해 정리해본 글입니다.
            2024-03-21 (목) 05:17
          1. DCGAN 모델로 128x128 이미지 생성하고 업스케일링, GFPGAN으로 보정

            DCGAN 모델로 128x128 이미지 생성하고 업스케일링, GFPGAN으로 보정
              2024-04-02 (화) 10:52
            1. torch-summary로 케라스 처럼 모델 요약(summary)하기

              torch-summary로 케라스 처럼 모델 요약(summary)하기
                2024-04-02 (화) 11:50