카테고리 보관물: PyTorch

PyTorch 0.3.1 Release

파이토치PyTorch 0.3.1 버전이 릴리즈되었습니다. 주로 버그 수정과 성능 향상을 포함하고 있습니다. 자세한 변경사항은 릴리즈 노트를 참고하세요.

파이토치 0.3.1 부터는 CUDA 3.0, 5.0과의 호환성이 삭제되었고, CUDA 7.5를 위한 바이너리 설치가 제외되었습니다. 대신 CUDA 8, 9, 9.1용 바이너리 설치가 제공됩니다. 지원하는 파이썬 버전은 2.7, 3.5, 3.6 입니다.

# macOS (no GPU)
$ conda install pytorch torchvision -c pytorch

# Linux CUDA 8.0
$ conda install pytorch torchvision -c pytorch
# Linux CUDA 9.0
$ conda install pytorch torchvision cuda90 -c pytorch
# Linux CUDA 9.1
$ conda install pytorch torchvision cuda91 -c pytorch
# Linux CPU
$ conda install pytorch-cpu torchvision -c pytorch

지난 달 말에는 마이크로소프트의 CNTK 2.4 버전이 릴리즈 되었습니다. 자세한 사항은 릴리즈 노트를 참고하세요.

PyTorch 0.3.0 Release

파이토치PyTorch 0.3.0 버전이 릴리즈되었습니다. 주요한 변경 사항으로는 loss를 reduce할지 여부를 지정할 수 있는 매개변수, autograd를 위한 프로파일러, 새로운 레이어와 다양한 함수 등 많은 기능이 추가, 변경되었고 성능이 많이 향상되었다고 합니다. 자세한 변경사항은 릴리즈 노트를 참고하세요.

파이토치 0.3.0 부터는 CUDA 9과 cuDNN 7을 지원하고 conda 채널이 pytorch로 바뀌었습니다. CUDA 지원은 텐서플로보다 조금 더 빠른 것 같습니다. 또 CUDA 8, 7.5 버전에 대한 바이너리도 유지하고 있어 편리한 것 같습니다. 지원하는 파이썬 버전은 2.7, 3.5, 3.6 입니다.

# macOS (no GPU)
$ conda install pytorch torchvision -c pytorch

# Linux CUDA 7.5
$ conda install pytorch torchvision cuda75 -c pytorch
# Linux CUDA 8.0
$ conda install pytorch torchvision -c pytorch
# Linux CUDA 9.0
$ conda install pytorch torchvision cuda90 -c pytorch

0.2.0 버전도 그러더니 파이토치는 이번에도 컨퍼런스(NIPS 2017)에 일정에 맞춰 출시하네요. 🙂

PyTorch 0.2.0 Release

파이토치PyTorch 0.2.0 버전이 드디어 릴리즈 되었습니다. 3개월이 넘게 걸렸지만 ICML 2017에 때를 맞추었네요.^^ 넘파이NumPy 스타일의 브로드캐스팅broadcasting, 분산처리, 강화된 배열 인덱싱, 2계 도함수 그래디언트second order gradient 등 많은 기능이 포함되었습니다. 추가된 기능에 대한 자세한 설명은 릴리즈 노트를 참고하세요. conda를 사용하면 비교적 편리하게 파이토치를 설치할 수 있습니다.

# Linux CUDA 7.5, macOS for Python 2.7/3.5/3.6
$ conda install pytorch torchvision -c soumith
# Linux CUDA 8.0
$ conda install pytorch torchvision cuda80 -c soumith

TF 성능 팁: Winograd 알고리즘 설정

텐서플로우tensorflow에서 훈련 성능을 높일 수 있는 위노그라드Winograd 콘볼루션 알고리즘이 디폴트로 활성화되어 있지 않습니다. ResNet을 비롯하여 요즘 규모의 콘볼루션 모델들에서 3×3 필터가 대세로 자리잡고 있습니다. 위노그라드 알고리즘은 3×3 행렬 계산의 연산 횟수를 줄여 줌으로써 모델 훈련 성능이 크게 증가됩니다. 이미 NVIDIA는 cuDNN5에서 부터 위노그라드 콘볼루션을 지원하고 있습니다. 일례로 Wide ResNet 에서 CIFAR10 데이터로 훈련시킬 때 K80 GPU에서 35%정도 빨라졌다고 합니다. 하지만 성능 개선의 정도는 GPU에 따라 다릅니다. 이 설정을 하려면 쉘이나 파이썬에서 아래와 같이 환경변수 TF_ENABLE_WINOGRAD_NONFUSED 를 지정해야 합니다.

os.environ['TF_ENABLE_WINOGRAD_NONFUSED'] = '1'
$export TF_ENABLE_WINOGRAD_NONFUSED=1

위노그라드 알고리즘의 설정이 파이토치PyTorch와의 성능 차이 요인 중 하나로 지적되면서 조만간 기본으로 사용하도록 설정될 것 같습니다. 일전에 소개해 드린 텐서플로우의 성능 테스트에서 사용한 코드도 위노그라드 설정을 지정하고 있습니다.

얼마전 NVIDIA가 GTC17에서 선보인 볼타Volta 아키텍처에서 16비트 부동소수점을 사용하여 성능을 크게 올렸다고 발표했습니다. 이와 동시에 페이스북이 지원하고 있는 Caffe2가 이미 16비트 부동소숫점을 지원한다고 발표했고 파이토치도 곧 기능을 추가할 거라고 언급했습니다. 아무래도 NVIDIA와 페이스북 간의 공조가 더 긴밀한 듯 합니다. 🙂

PyTorch v0.1.12

파이토치PyTorch의 0.1.12 버전이 릴리즈되었습니다. 이 버전은 0.1.x의 마지막 버전으로 알려져 있습니다. 넘파이NumPy 스타일을 따르도록 API 가 조금 변경되었고 CUDA의 희박행렬 연산 지원이 추가되었습니다. 그 외에 성능향상과 버그들이 많이 수정되었다고 합니다. 다음 버전은 0.2 버전으로 분산 처리와 그래디언트의 그래디언트를 계산하는 기능이 추가될 예정입니다.

때맞춰 텐서플로우 성능 테스트 자료가 공개되었습니다. 이는 얼마전 발표된 Caffe2성능 자료에 대한 반격으로 보입니다. NVidia DGX-1 에서 테스트한 결과를 보면 카페2와 텐서플로우가 앞서거니 뒤서거니 합니다. 하지만 여전히 초당 훈련 이미지 처리수가 중요한 성능지표인지에 대해서는 논란의 여지가 있습니다. 여기에 사용된 텐서플로우 벤치마크를 위한 코드는 상당히 최적화시킨 것 같습니다.

perf_summary_p100_single_server

18-caffe2-chart

파이토치를 설치하려면 리눅스와 맥OS에서 콘다 명령을 사용할 수 있습니다. 맥OS에서 CUDA 지원을 사용하려면 소스 컴파일을 해야합니다. 아직 윈도우즈 환경은 지원하지 않고 있습니다.

conda install pytorch torchvision -c soumith

PyTorch v0.1.11 Release

파이토치 0.1.11 버전이 릴리즈 되었습니다. 텐서플로우와 케라스와 일관되게 하려고 Adamax 옵티마이저의 기본 파라미터 값이 변경되었습니다(lr=2e-3, eps=1e-8). 또 CuDNN v6 지원과 성능 향상 이외에도 많은 기능이 추가되고 버그가 수정되었습니다. 자세한 내용은 릴리즈 노트를 참고하세요.

아나콘다를 사용하면 맥과 리눅스에서 파이토치를 쉽게 설치할 수 있습니다. 맥OS에서 CUDA 지원을 사용하려면 소스 컴파일을 해야합니다. 아직 윈도우즈 환경은 지원하지 않고 있습니다.

conda install pytorch torchvision -c soumith

DiscoGAN [1703.05192]

SKT T-Brain 팀의 첫 페이퍼 “Learning to Discover Cross-Domain Relations with Generative Adversarial Networks”(DiscoGAN, 1703.05192) 공개되었습니다. DiscoGAN은 한 종류의 이미지에서 학습하여 비슷한 스타일의 다른 종류의 이미지를 생성해 줍니다. T-Brain 페이스북 페이지에서 친절하게 자세히 설명하고 있습니다. DiscoGAN은 파이토치(!)로 구현되어 있으며 깃허브에 공개되어 있습니다. 하지만 번개같은 속도로 데브시스타즈의 김태훈님이 더 깔금하게 파이토치 구현을 만들었습니다. 이외에도 두 개의 체이너 구현(1, 2)도 만들어졌습니다.

Visdom: Visualization for ML & DL

visidom2

페이스북에서 Torch, PyTorch, NumPy 를 위한 시각화 도구인 Visdom을 오픈소스로 공개했습니다. 자연스럽게 이는 텐서플로우의 텐서보드TensorBoard의 대항마일 것으로 여겨집니다. 비즈돔은 토치용 시각화 서버인 display에 영감을 받았다고 합니다. 비즈돔은 웹브라우저로 사용할 수 있으며 웹서버는 오래전 페이스북이 인수한 프렌드피드FriendFeed가 만든 토네이도Tornado를 사용하고 있고 실제적인 그래픽 처리는 plotly.js를 이용합니다. API 를 봐서는 계산 그래프를 시각화시키는 도구는 아닌 것으로 보입니다. 하지만 앞으로 어떤 기능이 추가될지 기대가 됩니다.

PyTorch v0.1.10 Release

파이토치 0.1.10 버전이 릴리즈 되었습니다. 이번 버전에서는 텐서의 인덱싱과 브로드캐스팅 기능이 많이 추가 되었고 가변길이variable-length RNNs, 희박 텐서sparse tensor도 추가 되었습니다. 또한 CPU 기반의 연산이 2~10배 가량 빨라져서 NumPy에 근접한 성능을 낸다고 합니다. 😀

0.1.10 버전 부터는 리눅스와 맥OS에서 콘다 명령을 사용해 pytorch, torchvision을 모두 설치할 수 있습니다. 맥OS에서 CUDA 지원을 사용하려면 소스 컴파일을 해야합니다. 아직 윈도우즈 환경은 지원하지 않고 있습니다.

conda install pytorch torchvision -c soumith

PyTorch 0.1.9 Release

파이토치(PyTorch) 0.1.9 버전이 릴리즈 되었습니다. 이 버전에서는 주로 버그가 수정되었으며 기능상에 큰 변화는 없습니다. 아나콘다를 사용하면 파이토치 바이너리를 편하게 설치할 수 있습니다.

### conda (linux, osx)
$ conda install pytorch torchvision -c soumith

### pip
# linux: python2.7 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.9.post1-cp27-none-linux_x86_64.whl

# linux: python2.7 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.9.post1-cp27-none-linux_x86_64.whl

# linux: python3.5 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.9.post1-cp35-cp35m-linux_x86_64.whl

# linux: python3.5 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.9.post1-cp35-cp35m-linux_x86_64.whl

# linux: python3.6 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.9.post1-cp36-cp36m-linux_x86_64.whl

# linux: python3.6 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.9.post1-cp36-cp36m-linux_x86_64.whl

# osx: python2.7
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.9.post1-cp27-none-macosx_10_7_x86_64.whl

# osx: python3.5
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.9.post1-cp35-cp35m-macosx_10_6_x86_64.whl

# osx: python3.6
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.9.post1-cp36-cp36m-macosx_10_6_x86_64.whl

### torchvision
$ pip install torchvision