정말 오랜만에 글을 올린다. 그동안 졸업시험 보랴 연구하랴 다른 공부하랴 블로그에 손을 못 댔다. 그런 일상이 지속되고 있다가 오늘 아침 친구가 공유해준 기사 하나를 보고 아 다시 블로그를 써야겠다 다짐했다. 기사는 데이터 관련 직군에서 콘텐츠 제작의 중요성에 대한 글이었다. 매우 빠르게 변하는 시대, 새로운 기술을 배우고 본업에 적용해보는 것 등을 콘텐츠화해서 블로그에 저장해두는 것에 대한 중요성이다. 나 또한 이 블로그를 시작하게 된 계기 중에 하나가, High Energy Physics에서 배우는 통계, 코딩 스킬을 Real World에 적용할 수 있지 않을까이다. 반성하게 되었고 다시 초심으로 돌아가게 되었다. 비록 내 앞으로의 진로는 Physics 쪽이 아니지만 여기서 지내면서 얻은 기술들과 노하우들이 전부 미래에 의미를 가졌으면 한다. 생각만 한 계획은 평생 동안 생각만 하기 마련이다.
일반적으로 HEP에서는 Tree 구조의 데이터를 다루게된다. 어떤 Event 가 N회 발생하는데 각각의 Nth 이벤트마다 tree 가 있고, 그 밑으로 각 입자라는 Branch가 있고 그 밑으로는 각 입자들의 운동 상태를 나타내는 값들이 tree로 저장된다. 흥미로운 점은 Nth 이벤트에 있는 각 입자의 개수는 이벤트별로 다를 수 있다는 점이다. 예를 들어 N 이벤트에는 전자가 2개 있고 N+1 이벤트에는 전자가 3개 있을 수 있다. 이벤트마다 각기 다른 입자수가 있기 때문에 HEP에서는 일반적으로 numpy와 pandas와 같은 columnar database 보다는 이벤트를 For Loop으로 순회하고 그 안에 있는 입자들을 다시 For Loop으로 순회하는 Event Loop 시스템을 이용한다.
이 방법은 구현하기가 clear 하다는 장점이 있지만, 느리다. 물론 무려 몇년 전만 해도 HEP은 python이 아닌 C++ 이 베이스 언어였던 점을 고려하면 컴파일로 어느 정도 속도를 개선한 점은 있다. 하지만 최근에는 HEP에서도 python ecosystem을 활용한 modernized 된 analysis를 하려는 노력이 보이고 있다. 나도 python ecosystem을 접하고 그 편리성에 매료되어서 19년도부터 이 변화에 적극적으로 동참하고 있다. 기존에 사용하는 보수적 방법으로 그대로 따라가는 게 심신이 편하지만 Real world에서는 columnar base를 많이 쓰는데 HEP에서만 많이 쓰는 기술만 이해를 하는 사람이 된다면, 졸업 후 industry로 나가면 도태될 듯하고, 또 전부다 columnar base로 바꾸자니 협업 등에서 발생하는 현실적 제약이 있어서 어느 정도 중간에서 스스로 타협하면서 사용하는 중이다. 보수와 진보를 가르기보단 각각의 장점만을 취하는게 현명하지 않은가.
이 타협과정에서 생각할 거리도 많고 여러 새로운 코드를 많이 짜게 되는데, 앞으로 이러한 것들을 공유해보려 한다. 최대한 HEP 출신 아닌 사람들도 이해할 수 있고, 또 real world에서 어떻게 사용이 될 수 있을지 생각하면서 써보겠다. 나는 Real world에서 application을 정말 중요시 여기고 이것이 Academic field 와 Industry 에서 서로 win-win 이라고 생각한다.
'대학원 생활' 카테고리의 다른 글
CMS01: 2016 pre-VFP vs post-VFP (0) | 2021.12.10 |
---|---|
HEP03 Reconstruct Z boson using Coffea #2 Processor (0) | 2021.12.10 |
HEP02 Reconstruct Z boson using Coffea #1 Basic (1) | 2021.07.19 |
HEP01 Data cleaning using Coffea framework in CMS (1) | 2021.07.17 |