이 텍스트는 샘플 텍스트에요. 수강신청을 하면 원본 텍스트를 볼 수 있어요.
여기까지 따라 오시느라 수고가 많으셨습니다 🙂
이미 생생히 체험하고 계시겠지만, 딥러닝 커뮤니티가 격동의 시기를 겪고 있습니다. 일반인들에겐 허들이 낮아지는 한편 딥러닝을 업으로 삼는 엔지니어에겐 장벽이 높아지고 있는데요. 이런 시기에 무엇을 어떻게 배워야 할지 개인적으로 생각하는 방향성을 가감없이 이야기해 드리고자 합니다. 절대 규칙이라고는 생각하지 마시고 유연하게 수용하시길 바래요.
본 포스팅은 주기적으로 업데이트할 예정입니다.
딥러닝이 훌륭하게 해내는 분야이자 모두가 풀어내고 싶어하는 문제입니다. 내재된 복잡성과 추상성이 가장 큰 문제라고 보면 되어요. 크게 자연어, 음성 인식, 그리고 이번 과정에서 다루었던 비전이 있겠습니다.
이렇게 인지가 개입하는 분야에서는 사이즈가 모든 것을 지배한다는 사실을 강조했었죠. 그러나 큰 사이즈는 곧 많은 자본을 의미하며, 개인의 수준에서 태클하기는 더 어려운 분야가 되어간다는 암울한 현실을 암시합니다. 사실 네이버나 카카오같은 국내 테크 공룡들의 경우도 크게 다르지 않아요. 네이버의 한국어 언어 모델은 OpenAI의 다국어 언어 모델을 이길 수 없습니다.
그렇다면 이런 서비스들을 내재화 할 것인지, 아니면 OpenAI나 Google등이 제공하는 API에 의존할 것인지를 선택해야 합니다. API에 완전히 의존하는 것이 안전하고, 또 장기적으로 유리한 선택이라고 봅니다. 그러나 비용과 보안 측면에서 내재화를 향한 수요는 꾸준히 있을텐데요. 여러분들이 풀고자 하는 문제가 지나치게 일반적이지 않으며, 비즈니스에 특화된 솔루션이 필요한 상황이라면 내재화를 노려볼만 합니다.
기능주의라는 이론은 우리가 배우는 주제와도 뿌리를 같이합니다. 앨런 튜링은 그의 유명한 연구인 계산 기계와 지능에서 '기계도 생각할 수 있는가?'라는 질문을 던지는데요, 그로부터 10년 후 힐러리 퍼트남이 기계도 생각할 수 있음을 주장하며 제안한 논변이 기능주의의 원형입니다. 특히 기능을 진화의 역사와 결부시켜 설명하는 이론을 목적론적 의미론이라 합니다. 이를 통해 마음과 인간의 정신을 초자연적 존재를 가정하지 않고 설명해낼 수 있기에 자연주의 철학으로 간주하기도 하죠. 물론 완벽한 것은 아닙니다. 기능주의라는 이론은 우리가 배우는 주제와도 뿌리를 같이합니다. 앨런 튜링은 그의 유명한 연구인 계산 기계와 지능에서 '기계도 생각할 수 있는가?'라는 질문을 던지는데요, 그로부터 10년 후 힐러리 퍼트남이 기계도 생각할 수 있음을 주장하며 제안한 논변이 기능주의의 원형입니다. 특히 기능을 진화의 역사와 결부시켜 설명하는 이론을 목적론적 의미론이라 합니다. 이를 통해 마음과 인간의 정신을 초자연적 존재를 가정하지 않고 설명해낼 수 있기에 자연주의 철학으로 간주하기도 하죠. 물론 완벽한 것은 아닙니다.
기능주의라는 이론은 우리가 배우는 주제와도 뿌리를 같이합니다. 앨런 튜링은 그의 유명한 연구인 계산 기계와 지능에서 '기계도 생각할 수 있는가?'라는 질문을 던지는데요, 그로부터 10년 후 힐러리 퍼트남이 기계도 생각할 수 있음을 주장하며 제안한 논변이 기능주의의 원형입니다. 특히 기능을 진화의 역사와 결부시켜 설명하는 이론을 목적론적 의미론이라 합니다. 이를 통해 마음과 인간의 정신을 초자연적 존재를 가정하지 않고 설명해낼 수 있기에 자연주의 철학으로 간주하기도 하죠. 물론 완벽한 것은 아닙니다.
ChatGPT
와 Stable Diffusion
으로 대표되는 생성 모델을 계기로 하여, 딥러닝은 어느 때보다 파괴적인 트렌드가 되었습니다.
누구도 가늠하기 어려운 속도와 방향으로 발전하는 이 기술을 보다 보면 놀라움과 경외감, 때로는 두려움까지 느껴지기도 하는데요.
이런 추세는 멈추지 않을 것이며 오히려 가속될 것이 명백하니 딥러닝은 누구나 알고 제어할 수 있는 기술이 되어야 합니다.
그루마타 딥러닝 클래스에서는 이러한 마법같은 기술의 기원과 동기를 따져 보는 것에서부터 출발해
Transformer
와 같이 현대적인 딥러닝 시스템을 구성하는 필수 요소들을 배우며 직접 구현하게 됩니다.
왜와 어떻게라는 질문을 끊임없이 던지며, 딥러닝이라는 기술이 필연적으로 출현할 수 밖에 없었던 이유를 이해해 보아요.
딥러닝은 빠르게 변화하는 분야이기에 특정한 문제를 푸는 가장 좋은 솔루션은 월 단위로 바뀌기 마련입니다. 때문에 우리는 어떤 특정한 문제를 해결하는데 집중하지 않고 가장 일반적이며 범용적인, 딥러닝의 기저를 이루는 원리를 익히게 되어요. 시간이 지나도 변하지 않을 지식을 담으려고 노력했으니, 어떤 문제를 맞닥뜨려도 유연히 대응할 수 있는 자산이 될 것이라 믿습니다.
이번 클래스의 주된 대상은 프로그래머이며, 딥러닝 어플리케이션을 구성하고 관리하는 방법을 배우는데 많은 시간을 할애합니다.
딥러닝을 활용하는 프로덕트를 만들어본 경험이 있다면 데이터, 모델 등 관리 포인트가 많아져 상황이 빠르게 지저분해진다는 점에 공감하실텐데요.
사실 일반적인 웹 서버를 띄우는 상황만큼 간편한 CI/CD
가 어려운 것은 사실입니다.
아직까지는 그러한 관리 포인트를 일임할 수 있는 플랫폼이 없기에 프로젝트의 다양한 Artifact
를 직접 기록하고 관리해야 할 필요가 있어요.
그래서 재현과 추적이 가능한 프로젝트를 만들고 유지하는 것을 목표로 하여, Lightning
과 Wandb,
Hydra
와 같은 다양한 툴을 사용하는 법을 익힙니다.
실험의 모든 면모를 기록하고, 기초적인 형상 관리를 하는 법을 배우며 소위 MLOps라고 불리는 영역에 발을 담그게 되죠.
최종적으로는 이런 코드 베이스를 만들게 되는데요.
대시보드에서 확인할 수 있다시피, 작고 사소한 디테일까지 완벽히 기록되어 있는 모습을 볼 수 있습니다.
클래스에서 직접 다루지는 않지만 이 결과를 이용하면 큰 공수 없이 배포 파이프라인을 구성하거나, 기존의 CI/CD
파이프라인에 딥러닝 어플리케이션을 결합할 수 있죠.
딥러닝을 이미 활용하고 있으나 무언가 체계적이지 않은 기분이 들고, Jupyter Notebook
과 같이 수동적인, 사람이 개입해야 하는 작업 플로우를 버리지 못하고 있다면 클래스 수강을 고려해보세요.
지금 시점의 Best Practice가 무엇인지 확실히 익히고, 여러분들의 문제를 체계적으로 해결할 수 있게 될 거에요. 🙂
시스템의 Training
과정을 지도(Supervise)
해주는 정보를 Supervisory Signal
이라 합니다.
이번 영상에서 보았듯 인간이 알려준 Label
을 사용하거나, 도메인에 내재된 Symmetry
를 사용할 수 있는데요.
전자를 Supervised Learning
, 후자를 Self-Supervised Learning
이라고 부릅니다.
사람들이 이전부터 사용해오던 Supervised Learning
이라는 말은 조금 어색한 감이 있는데요.
모든 Training
과정에는 당연히 항상 Supervisory Signal
이 있기 때문입니다.
통상적으로 인간이 알려준 Label
을 Supervisory Signal
로서 사용하는 방식만을 Supervised Learning
라고 부르나, 이는
오래된 관습에 불과합니다. Human Supervised Learning
의 줄임말이라 생각하세요.
같은 맥락에서 Unsupervised Learning
이라는 말도 사용해 왔는데요.
이 또한 Self-Supervised Learning
이라 부르는게 적절합니다.
더 이상 사용하지 않아야 하는 말이에요.