2020.07.08

파이토치, 어떻게 시작할까?··· 알짜배기 학습 정보 5가지 

Ian Pointer | InfoWorld
딥 러닝이 계속해서 '핫'할 것으로 전망되는 가운데 딥 러닝 프레임워크, 즉 텐서플로우와 파이토치를 놓고 저울질하는 이들이 많다. 절대적인 숫자로 보면 구글 텐서플로우가 단연 강세를 보이고 있다. 하지만 페이스북 파이토치의 성장세도 만만치 않다. 쉽고 빠르게 배우고 사용할 수 있다는 점에서 파이토치가 큰 인기를 끌고 있다. 

파이토치가 딥 러닝 연구 분야를 강타했다고 해도 과언은 아닐 것이다. 지난 2년간 AI 컨퍼런스에 제출된 논문들을 보면 텐서플로우를 제치고 파이토치로 딥러닝을 구현한 경우가 많았다. 파이토치는 최근 최적화된 모델 생성과 이를 프로덕션 단계로 배포하는 과정에서 엄청난 개선이 이뤄졌다. R&D 연구소를 비롯해 업계에서도 사용할 수 있는 딥 러닝 프레임워크가 된 것이다. 

파이토치를 어떻게 공부해야 할까? 이를 배울 수 있는 책과 유료 강좌 등이 아주 많다. 하지만 인터넷에는 이 프레임워크를 무료로 배울 수 있는 리소스들이 아주 많다. 심지어 유료 리소스보다 더 품질이 좋은 무료 리소스도 있다. 파이토치를 배우기에 좋은 무료 온라인 강좌와 튜토리얼을 살펴본다.
 
ⓒGetty Images

파이토치 공식 사이트의 튜토리얼 
아마도 ‘공식 웹사이트’에서 파이토치를 시작하는 경우가 많을 것이다. 공식 웹사이트에는 API 레퍼런스부터 이해하기 쉬운 학습 영상(60분 분량), 문서 자료까지 여러 유용한 리소스가 많다. 프레임워크의 기본 및 고급 기능에 관한 안내서도 지원한다. 

또한 모델 양자화(quantization)나 프루닝(Pruning)과 같은 중요한 기능이 새롭게 추가되는 경우 이를 사용자의 애플리케이션에 구현하는 방법을 알려주는 퀵 튜토리얼을 제공하기도 한다.

단점도 있다. 다양한 튜토리얼의 코드가 상당히 다르다는 것이다. 때론 파이토치 코드 생성보다 튜토리얼에서 소개하려는 기능들을 보여주고자 표준 단계를 생략해버리는 경우도 있다. 

지난 몇 년간 튜토리얼 코드가 개선된 것은 분명하다. 하지만 주의를 기울일 필요는 있다. 이런 이유로 파이토치 공식 사이트를 주된 학습 리소스로 사용하는 것은 권장하지 않는다. 물론 유용한 리소스이자 최신 기능 활용법을 배울 수 있는 최적의 장소인 것은 확실하다. 

유다시티(Udacity)와 에드엑스(edX)의 파이토치 딥 러닝 과정
유다시티의 ‘파이토치로 시작하는 딥러닝 입문(Introduction to Deep Learning with PyTorch)’과 에드엑스의 ‘파이톤과 파이토치로 시작하는 딥러닝(Deep Learning with Python and PyTorch)’을 묶어서 설명하는 이유는 두 과정의 구조와 내용은 물론 문제점 또한 비슷하기 때문이다. 

두 과정 모두 일반적인 강의들로 구성돼 있다. 이를테면 딥 러닝 관련 개념들을 하나씩 소개하고 나서 이미지 및 텍스트 분류와 같은 더 복잡한 상황을 다룬다. 이것이 효과적인 딥 러닝 교육법인 것은 틀림없다. 하지만 흥미로운 것들을 배우기까지 상당히 많은 시간을 학습에 투자해야 한다는 단점이 있다.

또한 유다시티와 에드엑스의 과정은 내용 자체나 현 파이토치 버전을 고려할 때 약간 시대에 뒤떨어진 것으로 보인다. 예를 들면 유다시티의 교육 과정은 파이토치 0.4에 토대를 두고 있기 때문에 GAN이나 트랜스포머 기반 네트워크를 배울 수 없다. 이 밖에 반드시 문제라고 할 순 없지만 최신 버전(현재 기준 파이토치 1.5)에서 코드를 복제할 때 라이브러리가 코드를 지원하지 않는다는 경고를 마주칠 수도 있다. 따라서 두 과정 가운데 하나를 선택해야 한다면 페이스북이 공식 승인한 에드엑스가 조금 더 낫다고 본다. 

패스트에이아이(Fast.ai)의 딥 러닝 실무 과정
온라인 교육 사이트 패스트에이아이는 2016년 등장한 이래로 딥 러닝 무료 교육 과정의 표준이 됐다. 해당 과정(Practical Deep Learning for Coders)은 개설 첫해 케라스(Keras)와 텐서플로우를 중심으로 커리큘럼이 구성됐다. 하지만 두 번째 해부터는 파이토치에 초점을 맞추도록 전환됐다. (스위프트 포 텐서플로우도 조금 다루고 있다.) 또한 매년 두 가지 파트로 구성된 교육과정의 새로운 버전을 공개한다.

패스트에이아이는 다소 독특한 방식으로 딥 러닝을 가르친다. 다른 교육 과정들은 먼저 기초를 쌓는 데 중점을 둔다. 아주 간단한 뉴럴 네트워크 구축일지라도 말이다. 패스트에이아이는 그렇지 않다. 매우 빠르다. 첫 번째 수업이 끝났을 때 이미 최신 이미지 분류 도구를 구축하게 되는 것이다. 

이 때문에 기초나 개념을 놓칠 수 있다는 비판이 있다. 하지만 강의를 따라가다 보면 개념들을 어느 정도 이해할 수 있다. 물론 패스트에이아이를 유일한 파이토치 학습 리소스로 사용하는 것은 추천하지 않는다. 파이토치 프레임워크에 토대를 둔 라이브러리(Fast.ai)를 사용해 파이토치를 간접적으로 배우는 경향이 있기 때문이다. 

무조건 나쁘다는 의미는 아니다. 2019년도 교육 과정의 두 번째 파트는 실제 버그를 해결해보면서 간소화된 버전의 파이토치를 구축하는 강의들로 구성돼 있었다. 즉 파이토치의 기초와 Fast.ai 라이브러리의 기능을 모두 이해하고 싶다면 패스트에이아이와 다른 교육 과정을 함께 활용하는 것이 좋다. 

EPFL의 딥 러닝(EE-559)
대학에서 제공하는 교육 과정은 어떨까? 스위스 로잔 연방 공과 대학교(Ecole polytechnique fédérale de Lausanne, EPFL)의 EE-559는 슬라이드, 실습, 비디오 클립 등으로 구성된 일반적인 대학교 교육 과정이다. 기초부터 시작하지만 유다시티와 에드엑스에서 제공하는 것을 넘어서는 내용을 가르친다. 

이를테면 이 교육 과정은 GAN, 적대적 샘플(adversarial samples), 어텐션 메커니즘(Attention mechanisms), 트랜스포머 모델(Transformer models) 등을 다룬다. 또한 최신 파이토치 릴리스를 사용한다는 장점이 있다. 프레임워크에서 실제 사용되는 기법과 코드를 배울 수 있다. 

기타 리소스
파이토치를 중점적으로 다루진 않지만 매우 유용한 몇 가지 리소스들이 있다. 첫째, 파이토치 라이트닝(PyTorch Lightning)이다. 이는 파이토치의 케라스(Keras)와 같다. 물론 파이토치 라이트닝은 완벽한 파이토치용 API는 아니다. 그렇지만 체계적인 파이토치 코드를 생성할 수 있는 좋은 방법이다. 또 표준 보일러플레이트(학습, 테스트, 검증, 분산된 GPU/CPU 설정 등)를 구축해 대부분의 파이토치 작업에서 이를 반복해 작성하는 것을 피할 수 있다.

파이토치 라이트닝 웹사이트의 문서에는 좋은 튜토리얼들이 포함돼 있다. 일반 파이토치 프로젝트를 파이토치 라이트닝으로 변환하는 과정을 보여주는 영상이 특히 유용하다. 이 영상은 파이토치 라이트닝의 유연성과 사용 편의성을 잘 보여준다. 기본 개념을 학습한 다음 살펴볼 가치가 충분한 리소스다.

둘째, 지난 18개월 동안 트랜스포머 기반 모델의 ‘표준’으로 자리잡은 허깅페이스의 트랜스포머 라이브러리(Huggingface’s Transformers library)다. 딥 러닝과 텍스트 프로세싱으로 첨단 시스템을 구현하고 싶다면 트랜스포머가 좋은 출발점이 될 수 있다. 이 라이브러리에는 BERT, GPT-2 및 다른 트랜스포머 모델이 포함돼 있다(주 단위로 추가되는 것으로 보인다). 또한 라이브러리를 빠르게 구축하고 실행할 수 있는 구글 코랩 노트북(Google Colab notebooks) 일부도 포함돼 있다.

셋째, 야닉 킬처의 유튜브 채널이다. 이는 파이토치와 직접적인 관련은 없지만 최신 논문이나 연구 동향을 파악할 수 있는 좋은 방법이다. 파이토치를 막 배우고 있을 시점에는 이 영상들을 볼 필요가 없을지도 모른다. 하지만 여기서 언급된 몇 가지 과정을 마칠 때쯤이면 최신 동향이 궁금해질 것이다. 그런 점에서 킬처의 유튜브 채널은 아주 유용한 리소스다.

결론
파이토치를 배우고 싶다면 패스트에이아이의 교육 과정과 전통적인 교육 과정을 함께 활용하라고 권하고 싶다(후자의 경우 최신 파이토치를 다루는 EE-559가 적합할 것이다). 

덧붙여서 오는 9월 패스트에이아이의 책이 출판될 예정이다. 이는 딥 러닝에 관한 최고의 입문서로 꼽히게 될 것이다. 새로운 FastAI2 라이브러리(표준 파이토치와 쉽게 통합할 수 있는 다계층 API 구조가 추가된 라이브러리)를 토대로 한 패스트에이아이의 책은 이 분야에서 필수적인 학습 리소스가 되리라 전망한다. 물론 기트허브에서 무료로 볼 수도 있다. ciokr@idg.co.kr



2020.07.08

파이토치, 어떻게 시작할까?··· 알짜배기 학습 정보 5가지 

Ian Pointer | InfoWorld
딥 러닝이 계속해서 '핫'할 것으로 전망되는 가운데 딥 러닝 프레임워크, 즉 텐서플로우와 파이토치를 놓고 저울질하는 이들이 많다. 절대적인 숫자로 보면 구글 텐서플로우가 단연 강세를 보이고 있다. 하지만 페이스북 파이토치의 성장세도 만만치 않다. 쉽고 빠르게 배우고 사용할 수 있다는 점에서 파이토치가 큰 인기를 끌고 있다. 

파이토치가 딥 러닝 연구 분야를 강타했다고 해도 과언은 아닐 것이다. 지난 2년간 AI 컨퍼런스에 제출된 논문들을 보면 텐서플로우를 제치고 파이토치로 딥러닝을 구현한 경우가 많았다. 파이토치는 최근 최적화된 모델 생성과 이를 프로덕션 단계로 배포하는 과정에서 엄청난 개선이 이뤄졌다. R&D 연구소를 비롯해 업계에서도 사용할 수 있는 딥 러닝 프레임워크가 된 것이다. 

파이토치를 어떻게 공부해야 할까? 이를 배울 수 있는 책과 유료 강좌 등이 아주 많다. 하지만 인터넷에는 이 프레임워크를 무료로 배울 수 있는 리소스들이 아주 많다. 심지어 유료 리소스보다 더 품질이 좋은 무료 리소스도 있다. 파이토치를 배우기에 좋은 무료 온라인 강좌와 튜토리얼을 살펴본다.
 
ⓒGetty Images

파이토치 공식 사이트의 튜토리얼 
아마도 ‘공식 웹사이트’에서 파이토치를 시작하는 경우가 많을 것이다. 공식 웹사이트에는 API 레퍼런스부터 이해하기 쉬운 학습 영상(60분 분량), 문서 자료까지 여러 유용한 리소스가 많다. 프레임워크의 기본 및 고급 기능에 관한 안내서도 지원한다. 

또한 모델 양자화(quantization)나 프루닝(Pruning)과 같은 중요한 기능이 새롭게 추가되는 경우 이를 사용자의 애플리케이션에 구현하는 방법을 알려주는 퀵 튜토리얼을 제공하기도 한다.

단점도 있다. 다양한 튜토리얼의 코드가 상당히 다르다는 것이다. 때론 파이토치 코드 생성보다 튜토리얼에서 소개하려는 기능들을 보여주고자 표준 단계를 생략해버리는 경우도 있다. 

지난 몇 년간 튜토리얼 코드가 개선된 것은 분명하다. 하지만 주의를 기울일 필요는 있다. 이런 이유로 파이토치 공식 사이트를 주된 학습 리소스로 사용하는 것은 권장하지 않는다. 물론 유용한 리소스이자 최신 기능 활용법을 배울 수 있는 최적의 장소인 것은 확실하다. 

유다시티(Udacity)와 에드엑스(edX)의 파이토치 딥 러닝 과정
유다시티의 ‘파이토치로 시작하는 딥러닝 입문(Introduction to Deep Learning with PyTorch)’과 에드엑스의 ‘파이톤과 파이토치로 시작하는 딥러닝(Deep Learning with Python and PyTorch)’을 묶어서 설명하는 이유는 두 과정의 구조와 내용은 물론 문제점 또한 비슷하기 때문이다. 

두 과정 모두 일반적인 강의들로 구성돼 있다. 이를테면 딥 러닝 관련 개념들을 하나씩 소개하고 나서 이미지 및 텍스트 분류와 같은 더 복잡한 상황을 다룬다. 이것이 효과적인 딥 러닝 교육법인 것은 틀림없다. 하지만 흥미로운 것들을 배우기까지 상당히 많은 시간을 학습에 투자해야 한다는 단점이 있다.

또한 유다시티와 에드엑스의 과정은 내용 자체나 현 파이토치 버전을 고려할 때 약간 시대에 뒤떨어진 것으로 보인다. 예를 들면 유다시티의 교육 과정은 파이토치 0.4에 토대를 두고 있기 때문에 GAN이나 트랜스포머 기반 네트워크를 배울 수 없다. 이 밖에 반드시 문제라고 할 순 없지만 최신 버전(현재 기준 파이토치 1.5)에서 코드를 복제할 때 라이브러리가 코드를 지원하지 않는다는 경고를 마주칠 수도 있다. 따라서 두 과정 가운데 하나를 선택해야 한다면 페이스북이 공식 승인한 에드엑스가 조금 더 낫다고 본다. 

패스트에이아이(Fast.ai)의 딥 러닝 실무 과정
온라인 교육 사이트 패스트에이아이는 2016년 등장한 이래로 딥 러닝 무료 교육 과정의 표준이 됐다. 해당 과정(Practical Deep Learning for Coders)은 개설 첫해 케라스(Keras)와 텐서플로우를 중심으로 커리큘럼이 구성됐다. 하지만 두 번째 해부터는 파이토치에 초점을 맞추도록 전환됐다. (스위프트 포 텐서플로우도 조금 다루고 있다.) 또한 매년 두 가지 파트로 구성된 교육과정의 새로운 버전을 공개한다.

패스트에이아이는 다소 독특한 방식으로 딥 러닝을 가르친다. 다른 교육 과정들은 먼저 기초를 쌓는 데 중점을 둔다. 아주 간단한 뉴럴 네트워크 구축일지라도 말이다. 패스트에이아이는 그렇지 않다. 매우 빠르다. 첫 번째 수업이 끝났을 때 이미 최신 이미지 분류 도구를 구축하게 되는 것이다. 

이 때문에 기초나 개념을 놓칠 수 있다는 비판이 있다. 하지만 강의를 따라가다 보면 개념들을 어느 정도 이해할 수 있다. 물론 패스트에이아이를 유일한 파이토치 학습 리소스로 사용하는 것은 추천하지 않는다. 파이토치 프레임워크에 토대를 둔 라이브러리(Fast.ai)를 사용해 파이토치를 간접적으로 배우는 경향이 있기 때문이다. 

무조건 나쁘다는 의미는 아니다. 2019년도 교육 과정의 두 번째 파트는 실제 버그를 해결해보면서 간소화된 버전의 파이토치를 구축하는 강의들로 구성돼 있었다. 즉 파이토치의 기초와 Fast.ai 라이브러리의 기능을 모두 이해하고 싶다면 패스트에이아이와 다른 교육 과정을 함께 활용하는 것이 좋다. 

EPFL의 딥 러닝(EE-559)
대학에서 제공하는 교육 과정은 어떨까? 스위스 로잔 연방 공과 대학교(Ecole polytechnique fédérale de Lausanne, EPFL)의 EE-559는 슬라이드, 실습, 비디오 클립 등으로 구성된 일반적인 대학교 교육 과정이다. 기초부터 시작하지만 유다시티와 에드엑스에서 제공하는 것을 넘어서는 내용을 가르친다. 

이를테면 이 교육 과정은 GAN, 적대적 샘플(adversarial samples), 어텐션 메커니즘(Attention mechanisms), 트랜스포머 모델(Transformer models) 등을 다룬다. 또한 최신 파이토치 릴리스를 사용한다는 장점이 있다. 프레임워크에서 실제 사용되는 기법과 코드를 배울 수 있다. 

기타 리소스
파이토치를 중점적으로 다루진 않지만 매우 유용한 몇 가지 리소스들이 있다. 첫째, 파이토치 라이트닝(PyTorch Lightning)이다. 이는 파이토치의 케라스(Keras)와 같다. 물론 파이토치 라이트닝은 완벽한 파이토치용 API는 아니다. 그렇지만 체계적인 파이토치 코드를 생성할 수 있는 좋은 방법이다. 또 표준 보일러플레이트(학습, 테스트, 검증, 분산된 GPU/CPU 설정 등)를 구축해 대부분의 파이토치 작업에서 이를 반복해 작성하는 것을 피할 수 있다.

파이토치 라이트닝 웹사이트의 문서에는 좋은 튜토리얼들이 포함돼 있다. 일반 파이토치 프로젝트를 파이토치 라이트닝으로 변환하는 과정을 보여주는 영상이 특히 유용하다. 이 영상은 파이토치 라이트닝의 유연성과 사용 편의성을 잘 보여준다. 기본 개념을 학습한 다음 살펴볼 가치가 충분한 리소스다.

둘째, 지난 18개월 동안 트랜스포머 기반 모델의 ‘표준’으로 자리잡은 허깅페이스의 트랜스포머 라이브러리(Huggingface’s Transformers library)다. 딥 러닝과 텍스트 프로세싱으로 첨단 시스템을 구현하고 싶다면 트랜스포머가 좋은 출발점이 될 수 있다. 이 라이브러리에는 BERT, GPT-2 및 다른 트랜스포머 모델이 포함돼 있다(주 단위로 추가되는 것으로 보인다). 또한 라이브러리를 빠르게 구축하고 실행할 수 있는 구글 코랩 노트북(Google Colab notebooks) 일부도 포함돼 있다.

셋째, 야닉 킬처의 유튜브 채널이다. 이는 파이토치와 직접적인 관련은 없지만 최신 논문이나 연구 동향을 파악할 수 있는 좋은 방법이다. 파이토치를 막 배우고 있을 시점에는 이 영상들을 볼 필요가 없을지도 모른다. 하지만 여기서 언급된 몇 가지 과정을 마칠 때쯤이면 최신 동향이 궁금해질 것이다. 그런 점에서 킬처의 유튜브 채널은 아주 유용한 리소스다.

결론
파이토치를 배우고 싶다면 패스트에이아이의 교육 과정과 전통적인 교육 과정을 함께 활용하라고 권하고 싶다(후자의 경우 최신 파이토치를 다루는 EE-559가 적합할 것이다). 

덧붙여서 오는 9월 패스트에이아이의 책이 출판될 예정이다. 이는 딥 러닝에 관한 최고의 입문서로 꼽히게 될 것이다. 새로운 FastAI2 라이브러리(표준 파이토치와 쉽게 통합할 수 있는 다계층 API 구조가 추가된 라이브러리)를 토대로 한 패스트에이아이의 책은 이 분야에서 필수적인 학습 리소스가 되리라 전망한다. 물론 기트허브에서 무료로 볼 수도 있다. ciokr@idg.co.kr

X