300x250

Pytorch를 간단히 다루어본 적이 있는데, 앞으로의 연구에 익숙하게 활용하기 위해 Pytorch 내용을 정리해보려 한다.

대부분의 내용은 유튜브의 '모두를 위한 딥러닝 시즌2'를 참고하였다.

 

https://www.youtube.com/watch?v=7eldOrjQVi0&list=PLQ28Nx3M4JrhkqBVIXg-i5_CVVoS1UzAv&index=1 

 

목차

     

     

    먼저, Docker에 대한 설명을 기록해둔다.

    docker는 연구 과정에서도 많이 사용되는 유용한 기능을 제공하므로, 개념을 살펴볼 필요가 있다. (설치 방법 등은 따로 구글링해보면 쉽게 알아낼 수 있다. 또한, 이 블로그의 '버전관리' 카테고리에 유용한 명령어들을 정리해둘 것이다.)

     

     

     

     

     

    1. Docker가 제공하는 유용한 기능

     

    프로그래밍과 SW개발을 해오면서 이전에 다른 사람이 제공해놓은 유용한 코드를 똑같이 클론코딩 하였는데, 오류가 뜨는 경우가 수도 없이 많다.

     

    도커가 가장 유용한 것은, 다른 사람이 코드를 작성하고 실행했던 환경을 어떤 형태로 저장해두어서, 내가 그것을 이용할 때 작성자와 똑같은 가상 환경 상에서 코드를 작성하고 실행할 수 있다는 점이다.

    즉, 환경변수, 설치 오류, 드라이버, 레지스트리, 라이브러리의 버전 등을 신경쓰지 않아도 된다.

     

     

     

     

     

    2. Docker란?

     

    도커는 Container 기반의 가상 환경 시스템 (Container-based Virtualization System)이다.

    무슨 말인가 싶겠지만, 하나 하나 살펴보면 이해가 될 것이다.

     

     

     

    1) Virtualization (가상화)

     

    가상화를 통해 내 컴퓨터에 실제로 하드디스크가 하나밖에 없지만, 파티션을 나누어 C드라이브와 D드라이브로 있는 것처럼 보이게 할 수 있다.

     

    좀 더 나아가 컴퓨터 안에 가상의 컴퓨터를 만들 수 있다.

    맥os에서 parallels를 사용하여 windows 환경을 사용할 수 있는데, 이를 가상화에 의한 가상머신이라 한다.

     

    가상화의 활용

     

    가상화를 사용하면 서버 하나를 여러 가상 서버(가상 머신)로 쪼개어 여러 사람이 사용할 수 있게 된다.

    하지만, 한 컴퓨터에서 독립된 운영체제를 여러 개 돌리는 가상화의 경우, 매우 느려진다.

     

     

     

     

    2) Container (컨테이너)

     

    따라서 리눅스 측에서는 우분투, CentOS, 레드햇 등의 운영체제들을 모두 하나의 리눅스로 다룰 수 없을까 고민한 결과 탄생한 것이 바로 도커이다.

     

    도커

     

    도커를 사용하면 독립된 운영체제를 여러개 띄울 필요가 없다. 즉, 리눅스라는 기본 운영체제 하나 위에 다음과 같이 도커를 설치하여 여러 가상 환경을 만드는 것이다.

     

    Docker의 가상화

     

    이와 같이 운영체제는 하나로 통일하고, 그 상위에서 나머지 필요한 부분(라이브러리 버전 등!)만 묶어 가볍게 가상화 한 것이 바로 컨테이너이다.

     

    모두를 위한 딥러닝 시즌 2에서는 실습을 진행하는 데 필요한 모든 것이 세팅된 도커 이미지를 제공한다.

    이를 통해 로컬에서 모든 라이브러리의 버전을 하나하나 맞추어 가며 환경 설정을 할 필요가 없어진다.

     

     

     

     

     

    3. 윈도우즈나 맥에서 도커 사용 시 유의할 점

     

    윈도우즈와 맥에서도 도커를 사용할 수 있으나, 도커는 원래 리눅스 기반으로 만들어졌다. 따라서 별도의 가상 머신이나 하이퍼바이저를 사용하기 때문에 리눅스 만큼의 성능이 나오지 않을 수 있고, gpu 사용이 불가능하다.

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기