텐서플로우 GPU 버전 설치 문제점

이 글을 쓰는 이유는
나처럼 여기저기 흩어진 문서를 참고해서 수십 번의 실패를 한 후에 울지 않았으면 하는 바램 때문이다.
수십 번 실패하고 나니까, 중간에 성공할 수도 있었겠다는 생각이 많이 들었다.
부족한 부분이 뭐였는지 알려주고 싶었다. 아래 정리한 부분을 보강해서 다시 해보자. 빠이링~!

설치 성공한 글은 여기에 자랑했다. ^^  우분투 16.04 LTS에 텐서플로우 설치

텐서플로우는 여러 번 설치한 경험이 있다.
가장 먼저 설치한 곳은 맥북이었고, 텐서플로우 홈페이지에 있는대로 하니까 됐다.
안 된다고 얘기한 사람들이 많이 있는데, 이해를 하지 못했다.

두 번째는 수업에 활용해야 하는 관계로 윈도우에서 설치를 했다.
이 때는 도커에 대해 모를 때라 도커를 익히기 위한 시간이 많이 들어갔다.
집에 있는 모든 윈도우에 설치했고, 우리집에는 윈도우가 3개 있다.

마지막으로 최근에 구매한 엄청난 GPU가 달린 데스크탑.
mnist를 돌리는 과정에서 너무 오래 걸리는 것을 보고
CPU 버전으로는 되는게 아니구나.. 라는 것을 느낀 후에 구해한 마이 머신.

이 좋은 컴퓨터를 혼자 사용할 수 없어서, 멀티부팅으로 방향을 잡고 시작했는데..
우분투 설치 횟수는 50회 이상은 될 것 같고, 윈도우 설치만도 5번은 넘을 듯..
금요일 저녁부터 수요일 오전까지 계속.
화요일에 애들 데리고 바닷가 하루 다녀왔으니까, 4일 꼬박 들어갔다.
나중에는 손놀림도 빨라지고 파일 다운로드도 백업 받아서 처리하는 잔머리를 써서
한 시간에 3회 설치라는 놀라운 기적까지 이루어 냈다.

1. 계획의 부재
아무런 생각이 없었다. 이것저것 하다 보면 될 줄 알고 정리를 하지 않았다.
다양한 방법을 적용하면서 주먹구구식으로 접근했다.
기록했어야 했다. 10번 해서 안되면 그랬어야 하는 것 아닐까?
단순히 우분투 버전 쓰고, 어떤 옵션 선택했는지 간단하게 기록하면 일찍 끝낼 수 있었다.

2. 다양한 버전
우분투에는 다양한 버전이 존재한다. 예전에는 그렇지 않았는데..
처음에는 16.04로 시작을 해서 안 되길래
15.04로도 해보고 14.04로도 해보고 리눅스민트까지 손을 댔다.
그러다 도저히 안되서 16.04로 다시 시도해서 성공.
최신 버전이 문서도 없고 해서 설치가 어려운 면이 있다. 나에게는 최후의 보루였었다.

우분투 설치를 안정적으로 하려면 LTS가 붙은 버전을 사용하는 것이 좋다.
최신 버전이 부담되면, 15.04보다는 14.04에 설치하는 것이 좋다.
LTS는 Long Term Support의 약자로 장기간 지원되기 때문에 안정성이 탁월하다.
우분투는 2년에 한 번 LTS 버전을 출시하고, 짝수 버전이 LTS가 된다.

3. 우분투 설치
리눅스 계열은 설치할 때 디스크를 분할해서 적용하는 과정이 중요하다.
대충 찾아보고 시도하는 바람에 윈도우를 여러 번 날려 먹었다.
거기에 기존 설치된 우분투도 날라가고 해서 고생이 많았다.

최종적으로는 우분투에 할당된 파티션 전체에 대해 root(/)만 할당해서 사용.
스왑 디스크와 같은 것들은 우분투가 나중에 알아서 잡아줬다.
이 부분이 너무 헷갈려서 하다 보니까 그렇게 되는 걸 알았다.

여기서 제일 중요한 것은 "부트로더를 설치할 장치" 선택이다.
윈도우가 설치된 위치를 정확하게 가리켜야 하는데, 초보자에게는 이게 어렵다.
이 부분을 먼저 보고 시작한다면 한결 쉽다.
특히 인터넷에서 많이 얘기하는 "윈도우와 함께 설치"라는 메뉴가 나에게는 표시되지 않았다.

4. 부팅 디스크
이제는 윈도우도 우분투도 USB로 부팅을 해서 설치한다.
이렇게 부팅할 수 있는 USB로 설치하면 UEFI로 설치했다고 얘기한다.
레거시로 설치한다고도 하는데, 아직도 이게 뭔지 모른다.

설치하기 전에 윈도우에서 윈도우10과 우분투 16.04를 USB로 부팅 가능하게 만들었다.
이제 차례대로 꽂아가면서 OS를 설치한다.
이때 USB로 부팅이 안되거나 내가 원하는 화면으로 부팅되지 않으면
컴퓨터를 다시 켜서 CMOS 화면으로 들어가기 위해 DEL 키를 연신 눌러댄다.

운영체제 한 개당 USB 1개.
리눅스 버전이 많은데다 윈도우도 있어서 시간이 많이 걸렸다.
USB를 5개 정도 준비해서 윈도우, 우분투 14, 우분투 16, 민트 17, 민트 18을 만들면 일이 쉽다.
20~30회 정도 실패하면 이 생각이 든다. 부팅 디스크 만드는 것이 설치보다 오래 걸린다.
나는 3개의 USB를 사용했다. 윈도우, 우분투 16, 민트 18.

5. 그래픽 카드
이 부분이 가장 어려웠다. 멀티부팅은 어찌어찌 하다 보면 되는데, 그래픽 카드는 아니다.

첫 번째는 그래픽 카드 드라이버를 먼저 설치해야 하는지 몰랐다.
윈도우10도 엔비디아 그래픽 카드를 그냥 잡아주지 않는 것처럼 기본 설치되지 않는다.
엔비디아에서 다운로드 받아서 직접 설치해야 한다.

두 번째는 굉장히 잘 정리된 글에서
cuda를 설치하면 드라이버까지 함께 설치된다고 해서 cuda만 설치하려고 했다.
드라이버가 설치되어 있을 경우, 오히려 충돌이 나기 때문에 지우고 시작했었다.
나는 이 부분이 맞지 않았고,
그래픽 카드 드라이버를 먼저 설치한 이후에 cuda를 설치했을 때 아무런 문제도 없었다.
내 경우는 먼저 설치하지 않으면 nvidia-smi에서 계속 에러가 발생했다.

세 번째는 설치된 이후에 부팅을 하면, 로그인 화면에서 무한반복을 하는 버그를 만났다.
정확하게 입력해도 진입할 수 없었고, 이쪽에서는 굉장히 유명했다.
다양한 해결 방법이 나와있는데, 나는 하나도 먹히질 않았다.
설치가 됐는지 확인할 길도 없고 해서, 이럴 경우 우분투를 다시 깔아야 했다.

6. 참고 사이트
구글에서 "우분투 cuda 설치"로 검색했다.
그 중에서 충분히 신뢰할 수 있는 두 개 페이지를 찾았고, 이들을 참고해서 설치하려고 했다.
물론 모두 실패했지만, 다른 컴퓨터와 다른 그래픽 카드라면 충분히 될 수 있다고 본다.

cuda 설치까지가 제일 어려운데, 이 부분을 자세히 설명한다.
cuda가 설치됐다면 반드시 nvidia-smi 명령으로 설치를 확인해야 한다.

 (Part 2) CUDA 설치
 Ubuntu에 CUDA 설치