Google아 TF2.6이 나온지 언젠데 아직도 install 페이지에 TF2.4 설치방법이 있더라.

일 안하니?

 

 

망할 파이썬을 쓰다보면 인생의 교훈을 한가지 얻을 수 있다.

새로운 것 나왔다고 바로 쓰지말고 나온지 좀 된 것을 쓰자.

 

그런데 기왕 셋업하는 김에 좀 최신 것을 쓰려고 했다가 시간을 엄청 날렸다. TensorFlow 자체 documentation 은 금방금방 업데이트를 해주는데 설치방법은 왜 여전히 그대로인지... 내가 설치할 당시에는 2.5 기준으로 documentation이 나와있었는데 2.5는 CUDA 11.2 버전이 필요하고, 홈페이지에 나와있는 설치방법은 11.0을 기준으로 나와있어서 그대로 설치했다가는 'tf 2.5 에서는 cuda 11.2 버전이 필요합니다' 에러를 낸다.

 

문제는 이 cuda 11.2가 그당시 완성이 덜 되어있어서 몇몇 라이브러리가 없었는데 이 때문에 수동으로 라이브러리를 다운받아 이름을 변경하여 넣어야 돌아갔다. 세상에.

 

화난 개발자들이 올린 글들의 도움을 얻어 어찌저찌 설치를 했는데 왜 이 글을 쓰냐... apt-get autoclean과 apt-get autoremove 를 썼다가 수동으로 다운받아둔 라이브러리가 다 날아갔다. 이왕 다시 셋업 하는거 기록으로 남겨두자는 마음으로 글을 작성한다.

 

docker를 쓰는 쉬운 방법도 있다는 것 같지만 docker에 대한 필요성을 딱히 못 느끼기에 사용하지 않았다. 그래도 가상환경을 사용하지 않고 새로운 패키지를 까는 것을 죄악이니 꼭 conda는 사용하길 바란다.

 

0. tensorflow 2.6 설치

혹시 설치하지 않은 경우...

pip install tensorflow==2.6

1. NVIDIA GPU driver 설치

자기 그래픽 카드에 맞게 최신으로 설치.

https://www.nvidia.com/download/index.aspx?lang=en-us 

 

Download Drivers | NVIDIA

 

www.nvidia.com

 

2. CUDA Toolkit 11.4 Update 1 (11.4.1) 설치

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

콘솔에서 커맨드 실행전에 sudo 명령어를 사용하는 다른 명령을 사용해두는 것이 좋다.

안그러면 첫줄만 돌아가고 root password를 묻는 통에 둘째 라인부터 실행이 되지 않는다.

 

Ubuntu 18.04

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda-repo-ubuntu1804-11-4-local_11.4.1-470.57.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-4-local_11.4.1-470.57.02-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

Ubuntu 20.04

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.1-470.57.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.1-470.57.02-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

3-1. cuDNN v8.2.2 for CUDA 11.4 다운

아래 사이트에서 cuDNN Library for Linux (x86_64)를 다운받으면 된다.

 

원래 Debian Package (dpkg)를 사용해서 설치하는 것이 제일 간단한데 이게 왜인지 실행이 제대로 되지 않는다.

 

혹시 시도를 해보려면 아래 링크에서 cuDNN Runtime Library for Ubuntu18.04 x86_64 (Deb)를 받으면 된다.

 

Ubuntu 20.04인 경우 해당 버전에 맞는 것을 받자. Developer 버전을 받지 않아도 된다.

 

아래 설치는 dpkg가 아닌 library를 통째로 받은 것을 전제로 진행할 것이다.

 

https://developer.nvidia.com/rdp/cudnn-archive

 

cuDNN Archive

NVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.

developer.nvidia.com

3-2. cuDNN v8.2.2 for CUDA 11.4 설치

https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

 

Installation Guide :: NVIDIA Deep Learning cuDNN Documentation

The NVIDIA® CUDA® Deep Neural Network library™ (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalizati

docs.nvidia.com

위 링크에서 자세한 설치 방법을 알 수 있으나, 아래에 간략히 요약하겠다.

 

받은 파일은  .tgz 확장자로 tar.gz 파일이다. 내장 파일탐색기 nautilus로도 압축을 풀 수 있고, 터미널에서 tar -xzvf 다운받은파일명 으로 풀 수 있다.

 

내장 파일탐색기로 푸는 것이 쉬우니 그 방법을 추천한다.

 

tar 명령어로 푸는 방법은 아래와 같다.

더보기
tar -xzvf cudnn-11.4-linux-x64-v8.2.2.26.tgz

참고로, xzvf는 extract, gzip, verbosely list files processed, file 의 약자다.

 

다음으로 라이브러리를 CUDA Toolkit이 찾을 수 있는 장소에 넣어주어야 한다.

 

일반적으로 이는 /usr/local/cuda 폴더이며, 앞서 CUDA Toolkit을 설치하면 자동으로 생성되었을 것이다.

 

일단 터미널을 열고 압축을 풀어서 나온 cuda 폴더가 보이는 위치까지 간 뒤 아래 명령을 실행한다. 두 번째 명령이 파일이 많아서 시간이 조금 걸린다.

 

sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

4. 설치 종합

tensorflow v2.6 : tensorflow

CUDA Toolkit v 11.4.1 : CUDA 그 자체이다.

cuDNN v8.2.2 : library로 tensorflow 사용시 dynamic library 문제가 발생했다고 하면 이 친구가 문제인 것.

 

꼭 CUDA Toolkit은 cuDNN보다 먼저 설치해야 한다.

5. 확인

python에서 아래 코드로 GPU 사용을 확인해보자.

 

import tensorflow as tf

if tf.config.list_physical_devices('GPU'):
    print('TF is using GPU')
else:
    print('TF is NOT using GPU')

 

실행시 Information, Warning, Error로 로그가 나오는데, E만 없어도 대체로 정상작동하더라.

 

꼭 GPU로 돌아가는지 확인을 해보고 실행을 하자!

 

 

 

감사는 댓글이나 커피로 표현해주시면 감사히 받겠습니다.

paypal.me/knowblesse

 

 

 

Posted by Knowblesse

어느 날부터 웹캠이 흑백으로 나온다면 아래의 방법을 시도해보자.

 

Microsoft 공식 홈페이지를 포함해서 대부분의 Solution들이 드라이버 업데이트/재설치, 윈도우 업데이트/재설치를 이야기 하는데 정말 간단한 문제일 수 있다.

 

1. 카메라 고급 옵션 접근

먼저 Skype를 실행한다. 언젠가부터 Microsoft가 Microsoft Teams랑 Skype를 쥐도 새도 모르게 깔아놓던데 아주 마음에 안든다. Skype가 깔려있지 않다면 찾아서 설치하자. 카메라 고급 옵션에 접근하는 다른 방법도 있을텐데 (video stream을 사용하는 다른 소프트웨어도 가능하지 않을까? OBS Studio 라던가) 이게 가장 간단하다.

 

추가 메뉴에서 설정.
오디오 및 비디오에서 웹캠 설정

 

2. 카메라 고급 옵션 기본값으로 초기화.

전부 기본값으로 변경

 

Skype 뿐만 아니라 Zoom, Kakao Talk 등 웹캠 스트리밍이 가능한 소프트웨어에서 사용자가 직접 옵션 변경을 했거나, 낮은 조도 때문에 임의로 채도 혹은 낮은 빛 보상 옵션이 변경이 되면 흑백으로 나타나는 현상이 발생한다.

 

문제는 대다수의 소프트웨어들이 이러한 옵션을 display 해주지 않으며, 심지어 기준이 되어 Microsoft 기본 카메라 앱에 이 옵션에 대한 접근이 불가능 하다. (이게 주 원인인것 같다. 마소 놈들....) 심지어 한번 설정한 옵션은 카메라 모듈 내부에 따로 저장이 되는지 OS 재설치를 진행해도 흑백으로 나오는 현상이 발생한다.

 

삼성 노트북 A/S 후기

기술 발전과 정체로 노트북 브랜드간 격차가 사라져서 큰 차이가 없으면 국산 브랜드를 애용하자는 마음으로 현 노트북으로 삼성을 골랐다. 16Gb RAM과 외장 그래픽이 같이 딸린 200만원이 넘는 노트북 9을 구입했었는데 이게 몇 시간 Unity 기반 2D 게임을 돌렸다가 블루스크린과 함께 GPU가 저세상으로 갔다. 적어도 CPU에는 온도가 너무 높아지면 성능을 임의로 저하시켜서 칩을 보호하는 기능이 있는 것으로 아는데 이 제품의 GPU에는 이것을 제대로 구현하지 않은 것인가. 강제로 오버클럭을 시키거나 Fan이 고장났거나, 온도관련 안전장치를 해제 했으면 모르겠는데 정상 사용중 GPU가 고온으로 손상되다니 이것은 명백한 설계 미스다. 심지어 사이즈를 줄이기 위해서 CPU, RAM, GPU를 한 보드 위에 몰아두어서 GPU가 나갔다고 GPU만 고칠 수 없다더라. 수리비 90만원.

 

그나마 삼성에서 리퍼 부품 교환 서비스를 운영하고 있어서 절반 가격인 40만원 정도에 수리를 받았으나 제품 블랙리스트를 고려할만큼 많은 실망을 안겨주었다. A/S 기사님도 되도록 새 제품을 사는 것을 권장하셨으나 구매가를 생각하면 나쁘지 않은 선택이었다고 생각한다.

 

센터에 간 김에 위의 웹캠이 흑백으로 나오는 문제를 같이 문의했었다. 나는 소프트웨어 문제라고 계속 주장을 했으나 A/S 기사님이 자체 카메라 검사 유틸리티를 실행해서 확인을 했는데 진단은 카메라 모듈 하드웨어 손상. 카메라가 아예 안나왔으면 안나왔지 이런 현상을 본적이 없다고 하시더라. 카메라 모듈 역시 디스플레이와 일체형이라 수리비 20만원. 얜 포기를 하고 GPU 만 수리를 받았는데 오늘에야 문제를 자체적으로 해결했다.

 

노트북 제품들간 차이가 줄어든 현재, 사용자 경험의 사소한 차이가 구매로 이어진다. 수리가 어려운 구조의 제품 디자인과 GPU 보조 장치/프로그램의 설계 미스, A/S 프로토콜이 짚어내지 못한 너무나도 단순한 문제 때문에 앞으로 다른 브랜드 노트북에 눈이 가게 될 것 같다.

Posted by Knowblesse
카테고리 없음 | 2021. 7. 16. 10:35 | /31

서론

20년 10월부터 vim을 쓰기 시작한 이후, 전에는 어떻게 살았나 싶을 정도로 유용하게 사용하고 있다. 모든 코딩 작업은 전부 vim으로 진행을 하고, IDE의 부가적인 기능이 필요한 경우 IDE와 함께 열어서 돌릴 때만 IDE를 쓰고 그 이외의 코드 편집 작업은 vim에서 하는 방식으로도 쓴다.

 

8개월 가량 vim을 쓰면서 숙련도도 머리보다 손이 먼저 나갈만큼 증가했지만 vimrc 파일에도 크고작은 변화가 있었다. 특히 문제가 되었던 것은 집, 학교 컴퓨터와 노트북에 동일한 vim 환경을 구축하는 것이었는데 vimrc를 쪼개고 batch script를 만들고, git을 사용해 동일한 환경을 구축할 수 있도록 설정했다. 이 글은 최근에 바꾼 vimrc 파일을 공유하기 위함이다.

 

vimrc

  • Plugin 관리는 Plug로 정착을 했다. 사용법이 쉽고, github 기반 plugin들은 README.md를 읽을 필요도 없이 쉽게 적용이 가능하다.
  • 여러 plugin들을 테스트 해보다가 마음에 들거나 필요한게 생기면 하나씩 추가/수정을 진행했다.
  • 이전 글에서 열심히 만들어두었던 python에서 선택영역을 실행하는 기능은 결국 잘 안쓰게 되더라. 이전 명령들을 보기 어려워서 그런지 편리한 IDE로 자꾸 손이 간다.
" vim runtime config file

" Written by Knowblesse 2020

" Adapted from miguelgrinberg/.vimrc



"""""""""""""""""""""""""""""""""""

"             Basics              "

"""""""""""""""""""""""""""""""""""

" sane text files

set fileformat=unix " uses line ending LF (not DOS-style CR LF)

set encoding=utf-8

set fileencoding=utf-8

set nu

set tabstop=4

set shiftwidth=4

set softtabstop=4

set colorcolumn=100

set expandtab

set hlsearch

if has('unix')

    echo "Unix option is applied"

    set guifont=Bitstream\ Vera\ Sans\ Mono\ 12

else

    echo "Consier as Window OS"

    set guifont=Bitstream\ Vera\ Sans\ Mono:h12

endif

" Key Bindings

imap jk <Esc>

nmap <Tab> >>

nmap <S-tab> <<



" color scheme

syntax on

colorscheme monokai

filetype on

filetype plugin indent on



"""""""""""""""""""""""""""""""""""

"             Plugin              "

"""""""""""""""""""""""""""""""""""

"monokai theme is manually installed

"ctag is manually installed



call plug#begin()

Plug 'yegappan/taglist'

Plug 'tpope/vim-sensible'

"Plug 'terryma/vim-multiple-cursors'

Plug 'mg979/vim-visual-multi'

"buffer lists instead of tab

Plug 'ap/vim-buftabline'



"NERD

Plug 'preservim/nerdtree'



"Git

Plug 'airblade/vim-gitgutter'

Plug 'Xuyuanp/nerdtree-git-plugin'

Plug 'tpope/vim-fugitive'



"Coding

Plug 'davidhalter/jedi-vim'

Plug 'ervandew/supertab'

Plug 'dense-analysis/ale'

Plug 'itchyny/lightline.vim'



"Color theme

Plug 'joshdick/onedark.vim'



"Table generataion

Plug 'dhruvasagar/vim-table-mode'



call plug#end()





"""""""""""""""""""""""""""""""""""

"       Start up Functions        "

"""""""""""""""""""""""""""""""""""

"autocmd VimEnter * call StartUp()

"function! StartUp()

"    if 0 == argc()

"        NERDTree

"    end

"endfunction

"

"""""""""""""""""""""""""""""""""""

"        Plugin Options           "

"""""""""""""""""""""""""""""""""""

" lightline

set noshowmode

let g:lightline = { 'colorscheme': 'onedark' }



"nerdtree

let g:nerdtree_open = 0

map <leader>t :call NERDTreeToggle()<CR>

function NERDTreeToggle()

    NERDTreeToggle

    if g:nerdtree_open == 1

        let g:nerdtree_open = 0

    else

        let g:nerdtree_open = 1

        wincmd p

    endif

endfunction



"""""""""""""""""""""""""""""""""""

"             Python              "

"""""""""""""""""""""""""""""""""""

"Python execute selected line script

autocmd FileType python setlocal completeopt-=preview

python3 << EOL

import vim



def ExecuteSelectedLine(l1, l2):

    for i in range(l1-1,l2):

        print(">>" + vim.current.buffer[i])

        exec(vim.current.buffer[i],globals())

def ExecuteExpression(exp):

    print(">>" + exp)

    exec(exp,globals())

EOL

command! -range Ev <line1>,<line2> python3 ExecuteSelectedLine(<line1>, <line2>)

 

https://github.com/knowblesse/vimrc

 

knowblesse/vimrc

Contribute to knowblesse/vimrc development by creating an account on GitHub.

github.com

 

git integration

  • 아래는 내가 git을 사용해서 vim 환경을 동일하게 유지한 방법이다.
  • 새 환경을 설정할 때는 먼저 knowblesse/vimrc를 clone해서 저장해둔다.
  • vim이 윈도우나 Ubuntu에서 home 경로에서 _vimrc 혹은 .vimrc을 읽기 때문에 레포에 _vimrc 파일을 만들어 두고 리눅스인경우 .vimrc, 윈도우인경우 _vimrc로 이름을 바꾸어 home 위치에 넣어주는 스크립트, 각각 setVim_linux.sh와 setVim_win.ps1을 만들어두었다.
  • 이 _vimrc에는 사실 별게 들어있지 않다. 쉽게 환경별로 업데이트를 할 수 있도록 git을 clone 해둔 경로만 수정해주면 git pull을 통해서 vimrc.vim 파일이 업데이트가 되고 _vimrc가 이 .vim 파일을 읽는 방식이다.
  • 그리고 왜인지 OS마다 폰트 설정 방식이 달라서 OS를 읽고 상황에 따라 다른 명령어를 적용하도록 만들어두기도 했다.
  •  

 

Posted by Knowblesse