PyTorch Developer Day 2020
얼마전 PyTorch Team에서 처음으로 개최하는 PyTorch Developer Day에 초대한다는 메일이 와서 확인해보았다.
PTD2 (PyTorch Developer Day)
꽤 긴 내용이 있었는데, 요약하자면 “세션과 네트워킹으로 나누어진 행사를 개최하는데, 네트워킹 행사는 invite-only이고 이 행사에는 subject matter experts와 PyTorch core dev, contributor가 참가한다. 이 행사에서 다양한 주제에 대해 같이 의논할 예정인데 같이 할래?” 정도이다.
그 전에 왜 초대받았는지를 설명하면, PyTorch에 꽤 많이 Contribution을 했었는데 꽤 상위 Contributor로 잡혀서 그런 것으로 보인다. Issue, Pull Request를 합쳐서 한 20개 좀 넘게 정도 한 것 같다.
그래서 한국 시간으로 2020년 11월 13일 새벽 1시부터 아침 9시까지 열리는 이벤트였지만, “Facebook AI 사람들 구경해볼 수 있을까..?”라는 마음에 참가했다. 그리고 행사 전에 타임테이블을 한번 봤는데, 정말 좋은 세션들이 많아 행사 세션도 많이 들었다. 신기했던 점은 Facebook Live를 사용해서 했다는 점. 역시 Facebook 오픈 소스..
세션 정리
세션은 https://www.facebook.com/watch/?v=1001102260293556를 통해 다시 들어볼 수 있다. 또한 타임테이블은 https://fb.me/e/366HH7d0J에서 확인할 수 있다.
전부 다 들은 것은 아니고, 원하는 세션만 들었다.
자세히 들은 것이 아니라 다른 것을 보면서 간단하게 스크린샷만 찍고 메모를 했기 때문에 잘못 기록했을 가능성이 있음.
Keynote
되게 Usability를 중심으로 설명했다. Usability를 중심으로 Research 분야에서의 입지를 확고히 다진 다음 Production을 제대로 지원하자는 입장으로 보였다.
위 사진은 Facebook에서의 사용 현황을 보여주길래 가져와봤다. 15%나 PyTorch를 사용하지 않는 점이 굉장히 놀라웠다. TorchServe로 인해 다른 기타 ML 시스템을 교체할 수 있을텐데 그만큼이나 사용하지 않는다는 것은 학습 시에 불편한 점이 꽤 있다는 것일까? 아니면 단순히 학습을 따졌으니 옛날 모델들이 포함되어서 15%일 수도 있겠다.
위 사진은 Tensor Comprehension이라는 기능인데, 여기서 처음 소개되었는지는 모르겠지만 상당히 좋은 기능으로 보인다. 만약 이게 잘 된다면 일반적인 연산도 굉장히 빠르게 잘 처리할 수 있을 것으로 보이며, Mesh TensorFlow와 같이 분산 학습에서도 좋은 기능을 만들 수 있게 지원할 것으로 보인다. 링크는 https://github.com/facebookresearch/TensorComprehensions
Tensor Statement는 Tensor Comprehension을 기반으로 만든 DSL front-end이고, Experimental이지만, Tensor Comprehension 자체를 직접 사용하는 것보단 훨씬 좋아보인다.
위 캡쳐는 TensorPipe 이야기인데, 가장 중요한 이야기로 보인다. 서빙은 어쩔 수 없이 TensorFlow가 강하더라도, Large scale model 학습이나 Distributeed Training은 PyTorch 쪽이 강한 것으로 보이는데, 이를 더욱 강하게 만들어주는 기능으로 보인다. 이를 기반으로 많은 기능을 만들어 낼 것 같다. 꽤 간단한 방식으로 rpc를 잘 지원하는 것으로 보인다. GitHub은 여기 -> https://github.com/pytorch/tensorpipe
아래는 갑자기 컨퍼런스 중에 내 GitHub Username이 나와서 박제 ㅎㅎ
위 캡쳐는 PyTorch에 새롭게 주력하는 영역 중 세가지인 것으로 보인다. Distributed RPC가 제일 메인이 되지 않을까?
master branch에서 만들어지고 있는 것 같은데, Vulkan과 Metal support가 굉장히 놀랍고, benchmarking tools가 많이 기대된다.
..
이 밑에서부턴 제일 좋았던 세션 몇개만 정리해야지
..
PyTorch Core Deep Dives
Autograd관련 세션으로 기억하는데 핵심 내용은 “autograd 모듈을 functional하게 사용할 수 있게 된다.” 이다. 아래는 메모
- Jacobian을 한 라인으로 연산 가능
- torch.nn과 composability를 지켜줄 것
RPC 세션이었나..?
완전 DeepSpeed 전용이라 생각한게, 거의 다 DeepSpeed에 너무 필요한 기능이었다. 여기는 메모보다 캡쳐가 더 좋을 것 같아서 캡쳐만 나열.
이 세션이 DDP 관련 세션인데, 이번 Developer Day에서 정말 중요한 세션 중 하나로 보인다.
위 슬라이드는 조금 중요하다 생각했던 슬라이드인데, 정리하면 아래정도이다.
- DDP Communication Hook 제공
- DDP에서 Bucket 관련 오버헤드를 제거하는 옵션 추가
- DDP와 RPC를 잘 결합할 수 있도록 지원
- DDP에서 Dynamic Bucket Ordering
- Coming Soon:
- Pipeline parallelism
- Auto parallelism
- ZeRO style training framework for large model
- Auto tuning for DDP
- Intra-layer parallelism
이거는 Torch Text 관련 세션이었는데 핵심은 아래 슬라이드이다.
TensorBoard, Profiler 세션 같이 정리
- https://pytorch.org/tutorials/recipes/recipes/profiler.html
- https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html
Performance 관련 세션으로 기억하는데, 아래가 인상깊어서 가져왔다.
두번째 캡쳐의 Profiler 사진을 보면 정말 foreach가 엄청 오버헤드를 줄여준다는 것을 알 수 있다.
Benchmark Tool은 생각외로 “음..?” 싶었다. 그래도 많은 고민을 했구나 싶기도 하다.
PyTorch Research Talks
사실 DeepSpeed 세션에 가장 관심이 갔다.
말해 뭐해..이지만, PyTorch upstream에 들어갈 생각이라고 하니 큰 모델에서는 아마 PyTorch를 이제 이기기 힘들지 않을까? 그리고 Sparse Attention은 정말 써봐야겠다.
Gather 이벤트 (네트워킹 이벤트)
사실 여기에서 정말 많은 기대를 했는데, 듣기만 하다가 너무 졸려서 많은 이야기를 나누는 것을 포기했다 ㅠㅠ 2시간 반 행사였고, 행사 마지막쯤에 DeepSpeed 세션이 더 있었는데 그거 못 듣고 잔게 진짜 아쉬웠다.
정말 기대했던 행사지만, 한국 시간으로는 금요일 새벽인만큼 일하는 사람이 듣기에 어려운 것이 많이 아쉬웠다.
그래도 PyTorch Community에서 많이 보이던 사람, 내 PR 리뷰봐준 사람이나 Issue 코멘트 해준 사람들을 보아서 정말 반가웠다! 그리고 영어 공부 열심히 해야겠다..
후기
PyTorch 기여를 좀 많이 하긴 했지만, 다른 회사의 PyTorch Team에 있는 사람들과 같이 소개될 줄은 꿈에도 몰랐다. 큰 행운인 것으로 보이고, Facebook AI 사람 이야기를 들은 것도 정말 신기했다. F8 2019 (해커톤에 참가했었다 - 🎊 F8 2019 Hackathon 포스트) 때문에 PyTorch 기여를 시작했는데, 이 행사로 또 이어진 것이 신기했다. 정말 열심히 기여할 만한 프로젝트이란 생각이 든다.
그리고 무엇보다 Facebook은 커뮤니티 관리를 정말 잘한다는 생각을 했다. 이렇게 기여하는 입장에서 기쁜 프로젝트는 처음이다.