분류 전체보기
008. PyArmor로 코드 난독화 하기
코드 난독화는 배포해야하는 python 코드를 읽기 어렵게 만들어서 그대로 배끼지 못하게하는 최소한의 보안입니다. 여러 난독화, 암호화 방법중에 OpenSource 중 하나인 PyArmor를 사용해서 난독화를 진행해보겠습니다. 설치pip install pyarmor설치는 위처럼 PIP를 사용하면 간단하게 설치가 가능합니다. PyArmor은 단순히 파일 하나만을 난독화 할 수도있고 한 패키지 전체를 난독화 할 수도 있습니다. 기본적인 사용법은 다음과 같습니다.pyarmor obfuscate myscript.pypyarmor는 myscript와 같은 폴더에있는 모든 *.py파일을 dist폴더에 난독화하여 생성합니다. 다음은 패키지를 난독화 해보겠습니다. 프로젝트 구조myproject/ mypackage/ c..
007. [대학원생의 좌충우돌 GPU 클러스터 구축기] 1. 놀고있는 GPU 찾아내기!!
석사 입학후 나는 인프라 관리자를 맡게 되었다. 그전에도 관련일을 하긴했지만 전담으로 하진 않았으나 이제 엄연히 "관리자"라는 직책(?)을 부여받았다. 앞선 글에서도 이야기했지만 당시에는 모든 서버 할당을 관리자가 수동으로 했다. GPU 사용 요청이 들어오면 어느GPU가 사용되는지 어느 GPU가 놀고있는지 모니터링하고있다가 비어있는 GPU에 할당해주면 된다! 연구실에서 이런 일만 했다면 참 좋았겠지만! 석사과정 학생이었기에 수업도 들어야하고 논문도 써야하고 프로젝트도 해야해서 항상 시간이 부족했다. 또 관리하는 서버가 한두개 였다면 nvidia-smi(gpu 사용량 모니터링 명령어)를 서버에 들어가서 한두번 치면 되겠지만 5대를 넘어가니 매번들어가서 치는일이 정말 귀찮고 오래걸렸다. 그래서! 나는 왜 서..
006. [대학원생의 좌충우돌 GPU 클러스터 구축기] 0. 맨땅에 헤딩하기
2020년부터 석사를 시작해서 이제 3기에 접어들었지만 연구실생활은 4학년인 2019년 부터 시작했다. 새로 부임하신 교수님연구실에 들어갔었고 정말 아무것도 없는 무에서부터 시작했다. 처음엔 시행착오도 많이 격고 정말 힘들었지만 덕분에 클라우드, 인프라, 딥러닝연구 모두 재미있게 할 수 있었다. 오늘부터 우리연구실의 인프라 발전과정을 적어보려고한다. 2018년 여름방학. 정말 아무것도 없는 허허벌판, 화성을 탐사하듯 그때 연구실은 정말 아.무.것.도 없었다. 교수님 한 분만 믿고 들어간 연구실이라 아직 연구실 방 배정도 못받았었다. 그래서 건물에 남는 스터디공간인 이노갤러리 책상하나를 작은 연구실처럼 사용했는데 다행히 얼마 지나지 않아 학과 공동연구실에 자리를 얻을 수 있었다. 이노갤러리는 공간이 넓긴했..
005. Ubuntu Apache2 http접속 redirect 하기
Ubuntu 18.04, 20.04에는 기본적으로 Apache2가 깔려있습니다. 이를 이용해서 80포트로 들어오는 기본적인 http요청을 받을 수 있는데요. 필요에의해 다른 주소로 redirect해야할 필요가 있습니다. 그럴땐 apache2의 기본 index파일인 /var/www/html/index.html 파일을 수정해서 redirect를 할 수 있습니다. /var/www/html/index.html 위와 같이 tag를 이용하여 간단하게 구현할 수 있습니다. 위와 같이 설정했음에도 접속이 안되는 경우 apache2가 작동중인지 확인해보아야합니다.$ sudo systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded..
004. Kubectl 기본 namespace 변경하기 (kubectl, kubectx, kubens)
TL;DR(요약) # kubens(kubectx) 설치 # krew 이용하여 설치 $ kubectl krew install ns # apt (Debian, Ubuntu) $ sudo apt install kubectx # Home brew (MacOS) $ brew install kubectx # namespace 변경 $ kubens kuby-system Kubectl 프로처럼 다루기 시리즈 - Kubectl 플러그인 매니저 krew 설치하기 - Kubectl Namespace 빠르게 변경하기 (kubens) - Kubectl Context 빠르게 변경하기 (Kubectx) - Kubectl Config, Context 편하게 관리하기 (Konfig) 1. kubectl 사용하기 Kubernetes를 ..
003. Ubuntu NetPlan으로 고정 IP 설정하기
ubuntu 17.10부터 NetPlan을 이용해서 편리하게 IP 설정이 가능해졌다. 설정방법 0. 네트워크 인터페이스 확인 ifconfig 명령으로 설정하고자하는 인터페이스 이름을 확인한다. ifconfig 명령이 설치 되어 있지 않는 경우 ip -a addr로 확인이 가능하다. 보통 eth0, eno0, enp1s0 등의 이름으로 되어있다. 여기서는 enp1s0를 설정한다. $ ifconfig -a enp1s0: flags=4163 mtu 1500 inet xxx.xxx.xxx.xxx netmask 255.255.255.0 broadcast xxx.xxx.xxx.xxx inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20 ether xx:xx:xx:x..
002. 모델 계산량, FLOPs vs MAC, FLOPs vs FLOPS
딥러닝에서 계산량은 파라미터와 함께 모델이 얼마나 큰지, 효율적인지를 나타내는 지표이다. 계산량은 보통 FLOPs(FLoating point OPerations) 혹은 MAC(Multiply–ACcumulate)으로 나타낸다. 대부분의 현대 하드웨어는 tensor를 다루는 연산을 할때 FMA라고 하는 명령어 셋을 사용한다. FMA는 a*x+b를 하나의 연산(operation)으로 처리를 하고 이 연산이 몇번 실행되었는지를 세는 것이 MAC이다. FLOPs는 덧셈, 곱셈을 하나 하나의 연산으로 보기 때문에 일반적으로 MACs : FLOPs = 1 : 2(덧셈 1회, 곱셈 1회)가 된다. 따라서 MAC을 FLOPs로 변환할 때는 2를 곱하면 되고, 반대의 경우엔 2로 나눠주면 된다. 100 MACs = 2*..
001. Torchvision 0.8, GPU에서 돌아가는 Scriptable Transforms 사용해서 데이터 로딩 속도 개선하기
Torchvision 0.8 에서 새롭게 나온 기능중 가장 유용하고 기다려왔던 기능입니다. 바로 Transform이 Tensor, Batch computation, GPU and TorchScript를 지원합니다! 상세한 릴리즈 노트는 여기를 확인해 주세요. 이 포스트에서는 해당 기능을 이용해서 CIFAR, ImageNet을 Loading 하는 코드를 작성하고, 실제로 얼마나 빨라지는지 실험을 해보겠습니다.본 포스트에서 사용한 모든 코드는 여기에서 확인하세요. Star도 꾹 눌러주세요 ^^사용법기존의 Transform은 transform.compose를 이용해서 dataset의 transform 파라미터에 넣어주었습니다.original_transforms = transforms.Compose([ tran..