본문 바로가기
Backend MLOps/개인 환경 구축 기록

[ 자취방 워크스테이션 ] #8 도커, 아나콘다를 이용할 앞으로의 계획

by SteadyForDeep 2021. 1. 24.
반응형

//1

최근 일이 바빠서 업로드가 지연되었다.

이제부터는 실질적인 개발을 위한

컴퓨터 세팅에 들어갈 것이다.

파이썬을 이용해서 딥러닝을 개발하고 연구할때

가장 최적화 되어있는 환경을 만들고자 한다.

 

 

 

 

//2 세팅

궁극적인 환경은 다음과 같이 설정할 것이다.

노예 생활을 위한 초석. 마치 이집트 피라미드 내부의 히브리인들을 묘사한 벽화같다.

내가 경험해보니까

저런 상태가 가장 이상적인 구조의 개발환경이었다.

사실 도커는 아직도 내가 익숙하지 않아서

조금 문제가 되는 부분이 생긴다.

또 배포를 위한 것이 아닌 연구를 위한 개발환경에는

역시 아직도 도커보다는 아나콘다가 더 좋지 않나 생각한다.

하지만 역시 대세가 기우는건 그럴만한 이유가 있는 법이다.

도커를 안다고 해서 손해볼것은 없다.

 

아무튼 우리는 이번 챕터에서 저 아나콘다라는 녀석을 깔기전에

얄팍하게나마 알아볼 것이다.

 

 

 

 

//3 아나콘다? 파이썬? 

왜 자꾸 뱀 이야기를 하느냐.

그건 그냥 개발자들의 네이밍센스가 구리기 때문에 생긴 일이다.

한 유머로 개발자가 자식을 낳으면 son1,son2,son3

하면 son,sonn,sooooon

더 나아가 son, sonSon, sonSonSon 등으로 짓는 일도

이상하지 않을거라는 유머가 있다...

파이썬의 유래와 이런저런 이야기들이 궁금하다면

나무위키 파이썬을 읽어보길 바란다.

상당히 재미있다.

 

아무튼 아나콘다의 네이밍도

그냥 파이썬의 패키지 메니져기때문에

더 큰 뱀의 이름으로 지었을 가능성이 높다.

 

각설하고 패키지 메니저라는 말을 이해해야 한다.

수 많은 공대생들과 자연대생들이

가장 먼저 접하는 언어(라고 하기엔 조금 논란이 있)는 매트랩이다.

매트랩은 그 자체로도 굉장히 많은 내장 함수들을 가지고 있고

비싼 값을 하기 때문에 특별한 경우가 아니고서는

에드온을 추가로 구매하거나

다른 사람이 만들어둔 스크립트를 다운받아서 끌어다 쓸 필요가 없다.

 

그런데 공짜 언어들의 세계는 다르다.

특히나 오픈소스를 지향하는 경우

언어 자체에는 아주 간단한 사칙연산 정도만을 지원하는 경우가 대부분이다.

그러면 이걸로 사이언스를 어떻게 할 수 있나 하니

다른 사람들이 미리 만들어둔 함수들을 끌어다가 쓰는 방식으로

언어의 확장성을 키워나간다.

 

즉 연구하고 싶은 분야에 때라

이미지 처리 패키지 + 병렬연산 패키지 + 이미지플랏 패키지

음성처리 패키지 + 시그널 프로세싱 패키지 + 오디오 스트림 메니저 패키지

CSV 패키지 + 엑셀 읽기 키지 + 자료 통계 패키지

딥러닝 연산 패키지 + 전처리 키지 + 자료 입출력 키지

 

이런식으로 서로 다른 조합의 패키지를 이용하여

연구분야에 꼭 맞는 파이썬 커스터마이징이 가능해진다.

 

커스터마이징이 가능하다는 이야기는

결국 저 패키지들을 모두 조사해서 나에게 가장 적합한 패키지를 다운받는

드래곤볼 이라는 이야기다.

하지만 아나콘다는 수학, 과학, 공학등의 연구에

필수적으로 요구되는 패키지들을 자동으로 설치해 주기 때문에

상당히 간편하게 파이썬을 사용할 수 있다.

이런 패키지를 쉽게 관리할 수 있게 해주는 메니저가 바로 아나콘다다.

 

 

 

 

//4 버전 버전 버전....

문제는 항상 버전에서 발생한다.

'그러면 매트랩처럼 모든 키지를 다 깔아놓고 쓰면 되는거 아님?'

이라고 할 수도 있는데

그럴 경우 A라는 키지를 공통으로 사용하는 B, C, D 에서

서로 다른 A를 요구하는 문제가 발생한다.

 

무서운 이야기 : 

나는 D의 2.0.1버전을 꼭 사용해야만 하는데

D 2.0.1은 A 1.0.1을 사용하는 환경을 요구한다.

하지만 C의 경우는

A 2.0.1 이상의 환경에서만 동작하기 때문에

C를 설치할때는 반드시

A를 2.0.1이상으로 업그래이드해야 한다.

또 내가 구현하고자 하는 논문의 코드를

기가막히게 잘 구현한 코드를 깃헙에서 발견했는데

파이썬 2.7의 노인학대를 아직도 하고있는 사람이었다. ( print "hello" )

여기서 B는 버전에 관계없이

파이썬 2.7과는 충돌을 일으키고

3.x에서만 돌아간다..

 

벌써부터 숨이 턱턱 막히는 상황들이다.

이런 상황을 방지하고자 키지메니저는

가상환경이라는 개념을 사용한다.

가상환경은 한대의 컴퓨터에

여러가지 개발환경을 구현하고자 하는 방식이다.

독립적인 '환경'을 만들고

그 안에 키지와 파이썬을 설치함으로써

서로 다른 환경에 깔린 소스코드나 키지로부터

충돌의 위험없이 개발환경을 꾸릴 수 있다.

 

쉽게 말해서 루트 디렉토리를 임의로 옮겨서

그 하위의 디렉토리만 검색하게하는

인터프리터를 구동한다고 보면 된다.

(말하고보니 더 어렵다.)

 

뜬금없이 도커이야기를 하자면

도커는 컴퓨터 안에 독립적인 컴퓨터를

여러대 더 놓는 것이라고 생각하면 편하다.

하지만 아나콘다가 제공하는 환경은

도커의 컨테이너보다는 더 약한 개념의 분할로 이해할 수 있다.

 

내가 아나콘다를 선호하는 이유는

원격 제어를 위한 방식으로

주피터 노트북이나 주피터 랩을 더 선호하기 때문인데

이때 베이스 환경에서 백그라운드로 실행한 always-on 주피터가 하나 있고

노트북 커널마다 환경을 다르게 연결해주면

꿀이기 때문이다.

이런식으로

따라서 아나콘다에서는 어떻게 주피터와 연동해서 최적의 조건을 달성할 수 있는지

도커에서는 어떻게 원격코딩을 원활하게 할 수 있는지 에대한 이야기로

이후 챕터들을 이끌어가 보려고 한다.

 

이번 글은 별로 영양가 없는 이야기만 했다.

실질적인 아나콘다설치에 대해서 말문을 트면

저런 이야기들을 한번 해야할 것 같아서 따로 분리해서 글을 하나 썻다.

바로 다음 글을 작성해서 가려운 부분을 시원하게 긁어보자.

 

 

 

반응형

댓글