글 작성자: 만렙개발자

오늘은 Kaggle X Link 의 느낌으로 글을 써보려합니다.

Link?

머신러닝/인공지능 연구개발하시는 분들 중에는 jupyter-lab 환경을 구축하고 이를 활용하시는 분들이 많을 겁니다. bash부터 시작해서, ipynb 까지 아수 손쉽게 다룰 수 있는 환경이기 때문이죠. 그런데 혹시 여기서 extension을 사용해본 적이 있으신가요? VS Code의 경우에는 extension이 친숙한데, jupyter-lab에서는 extension 없이 순정으로 사용하시는 분들이 많을 것 같습니다. (저도 그랬거든요!) 오늘 소개해드릴 Link는 그 대표적인 extension으로, ipynb 파일을 작업할 때에 파이프라인을 다룰 수 있는 유용한 개발도구입니다!

https://www.makinarocks.ai/product/link/

Link란?
데이터 사이언티스트가 친숙하게 사용하는 

주피터랩(JupyterLab)의 확장 프로그램으로, 
가독성 있는 파이프라인을 만들어 쉽게 
공유할 수 있는 AI/ML 모델 개발 도구입니다.

 

Key Feature of Link

Link의 주요 기능은 다음과 같습니다.

1. 인터랙티브한 파이프라인 구성 가능

2. 강력한 협업 기능 지원

3. 작업속도 개선

4. 파이프라인과 소스코드 변경 이력 관리

5. 실행 환경 동기화 지원

 

 

Kaggle?

Kaggle은 머신러닝/데이터사이언스/인공지능 분야에 관심있는 전세계의 사람들이 모여 기업과 단체의 실제 문제와 데이터를 갖고 경쟁하는 플랫폼입니다. 최고의 수준을 자랑하며, 해외 대기업에 속한 이들도 상당수 참여하고 있어서 배울점들이 상당히 많습니다. 난이도도 상당히 높고, 트랜드도 매우 빠르게 반응하며, 수많은 소스코드가 공유되고 있습니다.

kaggle에 대한 가치는 이미 많은 분들이 잘 알고 계시겠지만, 간단히 요약하면 다음과 같습니다! 꼭 참여해보세요!

  • 여러 분야, 실제 데이터에 대한 경험
  • 다양한 baseline 코드 확보
  • 최신 트랜드를 따르는 코드
  • 다양한 접근방식에 대한 이해
  • 글로벌 네트워킹
  • 달성의 기회

 

점수를 높이는 Tip

Kaggle에서 고득점을 하기 위해서는, 높은 순위로 가기 위해서는 다음의 Tip이 있습니다!

이 Tip은 bestfitting이라는 kaggle의 top-tier 고수의 인터뷰에서 제가 공감한 부분만 선택해본 것입니다.

  • Good CV
  • 다른 대회에서 배우기
  • 관련 논문 읽기
  • 정신적 강인함

 

Kaggle 대회 참여를 위한 학습 및 실험

Kaggle은 특히 ipynb 파일의 형식을 선호합니다. kaggle에서는 notebook을 통해 코드를 공유하며, 그 EDA 및 baseline을 기반으로 많은 사람들이 함께 성장하며 경쟁을 펼칩니다. 공유와 경쟁이 함께하는 독특한 문화가 형성되어있죠!

예시) https://www.kaggle.com/code/seriousran/just-speed-up-calculating-atomic-distances

 

Just speed up calculating atomic distances

Explore and run machine learning code with Kaggle Notebooks | Using data from Predicting Molecular Properties

www.kaggle.com

하지만, Kaggle 대회의 성격에 따라 kaggle에서 지원하는 일주일 한도 내의 GPU/TPU만으로는 충분히 학습하기 어려운 상황들이 많습니다. 그러면 local에서 작업을 해야하는데, 저는 이 때 jupyter-lab을 많이 사용합니다. 

 

Kaggle의 경우 한 ipynb 파일이 길~게 작성된 파일들이 많이 공유됩니다. 그래야만 웹 형태에서 쉽게 작업하고 볼 수 있기 때문이죠. Kaggle 플랫폼 안에서의 문화이기도 한 것 같습니다. 그것을 download하여 local에서 사용한다면, Link를 통해 학습 및 실험을 효율적으로 할 수 있습니다.

 

먼저, 긴 코드를 파이프라인으로 정리할 수 있습니다.

예시코드) https://www.kaggle.com/code/vslaykovsky/train-pytorch-effnetv2-baseline-cv-0-49

 

[train] PyTorch-EffNetV2 baseline CV:0.49

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

예시 코드를 살펴보시면, 정말 길다는 걸 느끼실 수 있을겁니다.

(물론, 코드에 학습을 위한 간단한 샘플 데이터 테스트나 시각화도 포함되어있긴 합니다.)

이 코드를 Link를 통해 파이프라인을 만들어보면 다음과 같이 정리할 수 있습니다.

전체적인 구조를 좀 보실 수 있으신가요? 길게 늘어진 코드를 그냥 보기보다는, 이렇듯 파이프라인과 함께 본다면 좀 더 이해하기 쉬울 것입니다. 

 

예를들어 노드를 만들어보겠습니다!

컴포넌트에 이름을 주고, 오른쪽의 체크 버튼을 누르면 하나의 노드가 생성됩니다.

그리고, 그 다음 컴포넌트를 만들 때에는 부모 컴포넌트를 선택할 수 있습니다. 파이프라인이 연결되겠죠?

그렇게 컴포넌트들에 이름과 관계를 설정하면, 이렇게 표현이 되구요!

파이프라인을 구축하면, 위쪽에 보여드린 것처럼 잘 정리된 그래프의 형태로 보여집니다!

 

이렇게 파이프라인을 구축해놓으면 다양한 Link의 기능들을 활용할 수 있습니다.

먼저, 원하는 노드를 클릭하면, 해당 코드 블록으로 이동을 합니다. 즉, 책갈피처럼도 활용할 수 있는 것이죠!

코드 탐색이 훨씬 간편해집니다.

 

다음으로는, 원하는 블록을 손쉽게 실행할 수 있습니다.

실행된 것, 실행중인 것, 아직 실행되지 않은 것, 에러가 발생한 것도 색으로 알아차릴 수 있습니다.

 

또한 실행 결과를 캐싱해둘 수도 있습니다.

전처리나 재학습 등 다양한 경우에서 캐싱된 결과를 활용한다면, 같은 블록을 재실행하지 않아도 되기 때문에 시간을 효율적으로 아낄 수 있습니다.

 

마지막으로는 코드 관리 및 협업이 가능합니다. 깃헙과도 연동이 되기에 활용할 여지가 많습니다!

 

좀 더 자세한 설명은 마키나락스의 Link 페이지를 참조하시면 될 것 같습니다!

https://www.makinarocks.ai/product/link/