4P by GN⁺ | ★ favorite | 댓글 1개
  • Machine Learning Engineering Open Book은 LLM, VLM, RAG 모델의 학습·파인튜닝·추론을 성공적으로 수행하기 위한 방법론, 도구, 단계별 명령을 모은 공개 자료임
  • 대상 독자는 LLM/VLM 학습 엔지니어와 운영자이며, 빠르게 문제를 해결할 수 있도록 스크립트와 복사해 실행할 수 있는 명령을 많이 포함함
  • 내용은 2022년 BLOOM-176B, 2023년 IDEFICS-80B, 2024년 Contextual.AI의 RAG 모델 학습 경험에서 축적된 노하우를 바탕으로 함
  • 범위는 클라우드 선택, 가속기·스토리지·네트워크, 오케스트레이션, 학습, 추론, 디버깅, 테스트, 리소스까지 포함하며 PDF와 EPUB 전자책도 제공됨
  • 대규모 ML 컴퓨트 클러스터를 직접 다루기 어려운 커뮤니티가 실제 대규모 학습 경험에서 나온 운영 지식을 간접적으로 학습할 수 있게 하는 공개 지식 저장소임

책의 목적과 독자

  • Machine Learning Engineering Open Book은 대형 언어 모델과 멀티모달 모델의 학습, 파인튜닝, 추론을 위한 공개 지식 모음임
  • 기술 자료 성격이 강하며, LLM/VLM 학습 엔지니어와 운영자가 빠르게 적용할 수 있도록 스크립트와 복사해 실행 가능한 명령을 포함함
  • 저장소의 내용은 과거에 조사해 실제로 작동했던 해결책을 빠르게 다시 찾기 위한 개인 노트에서 출발했고, 더 넓은 ML 커뮤니티와 공유됨

경험 기반의 범위

  • 노하우의 상당 부분은 실제 대규모 모델 학습 경험에서 축적됨
  • 대규모 ML 컴퓨트 클러스터 임대 비용이 높아 직접 경험하기 어려운 영역의 지식을 커뮤니티가 간접적으로 배울 수 있도록 하는 데 초점이 있음

구성된 주제

  • Insights

    • AI Battlefield Engineering
    • 클라우드 제공자를 고르는 방법
  • Hardware

    • Compute: 가속기, CPU, CPU 메모리
    • Storage: 로컬, 분산, 공유 파일 시스템
    • Network: 노드 내부와 노드 간 네트워킹
  • Orchestration

    • 컨테이너와 리소스를 관리하는 오케스트레이션 시스템
    • SLURM: Simple Linux Utility for Resource Management
  • Training / Inference

    • 모델 학습 관련 가이드
    • 모델 추론 관련 인사이트
  • Development

    • 쉬운 문제와 어려운 문제를 모두 다루는 디버깅·트러블슈팅
    • 관련 레시피와 방법론을 담은 The Art of Debugging Open book
    • 테스트 작성에 도움이 되는 팁과 도구
  • Miscellaneous

    • LLM/VLM 연대기 리소스

빠르게 찾는 비교표와 도구

  • 고성능 가속기 비교표는 이론적 TFLOPS와 가속기 메모리 크기·속도를 다룸
  • 네트워크 비교표는 노드 간 네트워킹과 노드 내부 네트워킹의 이론적 속도를 다룸
  • 자주 쓰는 도구가 별도 바로가기로 제공됨
    • all_reduce_bench.py: nccl-tests보다 쉽게 네트워크 처리량을 벤치마크하는 도구
    • torch-distributed-gpu-test.py: 노드 간 연결성을 빠르게 테스트하는 도구
    • mamf-finder.py: 가속기에서 실제로 얻을 수 있는 TFLOPS 측정을 찾는 도구
  • 자주 쓰는 가이드도 별도 바로가기로 제공됨
    • PyTorch 애플리케이션이 멈추거나 깨질 때 빠르게 적용할 수 있는 디버깅 해법
    • SLURM 사용자용 치트시트와 트릭
    • 작은 모델, 데이터셋, 토크나이저를 만드는 방법
    • 공개된 LLM/VLM 학습 로그북 모음

배포 형식과 참여

  • 전자책은 Hugging Face Hub에서 제공됨
  • 전자책은 몇 주에 한 번 정도 다시 빌드될 예정이며, 최신 전자책을 직접 빌드하는 지침도 제공됨
  • ML 엔지니어링 관련 논의는 저장소의 community discussions에서 가능함
  • 버그, 오타, 개선 제안은 Issue 또는 PR로 받을 수 있음
  • 콘텐츠 라이선스는 Attribution-ShareAlike 4.0 International
  • 인용 정보는 Machine Learning Engineering Open Book, 연도 2023-2026, GitHub 저장소 URL을 포함함

댓글과 토론

Hacker News 의견들
  • 연구 지원 업무로 LLM 학습 설정 디버깅을 매일 하고 있는데, 처음 시작할 때 이런 노트가 있었으면 정말 좋았겠다고 느껴짐

    • 게임 개발자로서 머신러닝/딥러닝에 들어가려는 중인데, 배우면서 해볼 수 있을 만큼 어렵지 않으면서 실제 가치가 있는 문제를 찾는 게 가장 큰 과제였고, 하나 찾은 것 같아서 의견이 궁금함
      지금 게임/영화 애니메이션용 모션 캡처 데이터 수집에는 관성식과 광학식 두 시스템이 있음. 관성식은 더 쉽고 저렴하지만 캡처 오류와 부정확성이 많아 수작업 보정이 필요하고, 광학식은 더 정확하고 정리가 덜 필요하지만 하드웨어와 공간 비용이 큼
      관성식 모션 캡처 슈트를 입고 동시에 광학식 세션도 녹화한 뒤, 머신러닝으로 모션 캡처 데이터 자동 보정을 학습시키는 아이디어임. 이론적으로는 관성식 녹화 데이터를 머신러닝에 통과시켜 광학식 수준의 정밀도를 얻을 수 있을 것 같음
      첫 프로젝트로 다룰 만한지, 어떻게 풀면 좋을지, 참고할 만한 기존 프로젝트가 있는지 궁금함
  • 모델 학습과 배포 관련 작업에서 응용 과학자들을 돕는 입장인데, 최적화·성능 같은 더 저수준 엔지니어링 작업에 어떻게 노출될 수 있을지 궁금함
    회사에 ML 인프라 팀은 있지만 목표가 플랫폼 주변 도구를 만드는 쪽이지, 워크로드를 최적으로 돌리는 데 집중하는 건 아님

    • 최적화는 프로파일링 없이는 불가능하다고 봄. 모델 성능을 이해하는 도구에 익숙해지는 것이 첫 단계일 수 있음
      예: https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
    • Brendan Gregg의 시스템 성능과 프로파일링 자료가 좋은 출발점임. ML 성능 문제의 상당 부분은 결국 Linux perf이거나, SLURM 같은 고성능 컴퓨팅 스케줄링 시스템에서 도대체 무슨 일이 벌어지는지 파악하는 문제로 귀결됨
      https://www.brendangregg.com/linuxperf.html
  • AI Battlefield 섹션의 Unsolicited Advice 부분이 특히 좋았음. 모든 것이 정신없이 빠르게 움직이고, AI 개발의 집요한 급진전 속에서 늘 물에 빠진 듯한 감정적 부담을 느끼는 현실을 매우 현실적으로 다룸
    https://github.com/stas00/ml-engineering/blob/master/insight...

  • Slurm은 얼마나 널리 쓰이나?

    • Slurm은 고성능 컴퓨팅(HPC) 커뮤니티에서 사실상 어디에나 있음. HPC 쪽에서 비슷한 경쟁자로는 SGE [1]와 Torque/PBS [2] 리소스 스케줄러 정도라고 봄
      정확한 수치는 모르지만, Top 500 슈퍼컴퓨터 [3]의 압도적 다수가 Slurm을 돌리고 있을 것으로 추정함. 다른 사람들이 말했듯 학계 연구 컴퓨팅 센터도 대부분 Slurm을 쓰고, 미국 DoE 국립 연구소에서도 Slurm이 지배적임
      그리고 재미있는 사실로, 어쩌면 전설일 수도 있지만 “Simple Linux Utility for Resource Management (SLURM)”라는 이름은 Futurama의 음료수 Slurm에서 온 역두문자어라고 함 [4]
      [1] https://en.wikipedia.org/wiki/Oracle_Grid_Engine
      [2] https://github.com/adaptivecomputing/torque
      [3] https://www.top500.org/
      [4] https://futurama.fandom.com/wiki/Slurm
    • Wikipedia에 따르면 “Slurm은 TOP500 슈퍼컴퓨터의 약 60% 에서 워크로드 관리자로 쓰인다”고 함. 지난 10년 정도 대부분의 계산 클러스터에서 작업 관리자 프런트엔드로 써왔음
    • Llama 2 모델도 Slurm에서 학습됐음
    • 관련해서, 많은 GPU로 대형 모델 학습을 주로 하는 물리 클러스터에서 Slurm에서 Kubernetes로 이전해 성공한 사람이 있는지 궁금함
    • 대부분의 고성능 컴퓨팅 클러스터에서 쓰임. 아직 Torque에 남아 있는 곳은 예외겠지만
  • 재현성 항목을 무작위로 눌러봤는데, 분산 학습에서 재현성을 어떻게 달성하는지 여전히 궁금함. 결정적 동기화를 하면 느려지지 않나? 그래도 적어도 몇몇 대기업에서는 학습이 재현 가능하다고 들었음

    • 학습 업데이트를 가능한 한 교환법칙이 성립하도록 만들고 싶을 것임. 그러면 업데이트를 어떤 순서로 적용하든 상관없어짐
  • 직장이 없는 상태에서 이런 것들을 어떻게 경험할 수 있나?

    • 제출된 책 같은 자료를 읽고, 직접 작은 프로젝트를 해보면 됨
      이미 프로그래밍 직업이 없는 상태에서 프로그래밍을 배우는 것과 크게 다르지 않음
      물론 둘 다 쉽다는 뜻은 아니고, 상당한 헌신이 필요함
    • 목표가 취업이라면 현실적인 기대치를 잡아야 함
      웹 개발 같은 분야와 비교하면 이쪽 채용 시장은 매우 작고, 프로젝트들은 아주 깊은 지식을 가진 전문가를 요구함. ChatGPT나 Stack Overflow가 크게 도와주는 종류의 일은 아님
    • 사이드 프로젝트를 하거나 다른 사람의 사이드 프로젝트에 참여하면 됨. 가장 중요한 건 커뮤니티와 연결되고 그들과 대화할 수 있는 기술 언어를 배우는 것임
      이 커뮤니티는 비교적 작고, 시작하려면 여러 가지가 필요함. 어느 정도의 머신러닝, 확실한 코딩 능력, 현대 가속기가 어떻게 동작하는지에 대한 지식, 이 방향의 논문을 읽고 이해하는 능력이 필요함
    • 내 경험상 가장 좋은 방법은 사이드 프로젝트임. 기술만 배우지 말고, 배우고 싶은 새 기술을 활용하는 실현 가능한 프로젝트를 골라서 파고들면 됨
      “실현 가능한” 것을 고르는 게 자주 까다로우니, 몇 주 뒤 다시 평가하고 필요하면 기대치를 조정하는 걸 두려워하지 말아야 함
      중요한 건 계속 움직이는 것임
    • fast.ai 과정을 해보면 됨. 약간의 노력과 창의성이 있으면 2주 넘게 걸려도 모델을 미세 조정해서 최신 수준 결과를 낼 수 있을 것임
  • 이걸 실험해보고 싶은데, 제대로 된 GPU가 없음. 다들 실제로는 어떻게 돌리는지 궁금함

  • 최신 정보를 따라가려면 어떤 Twitter 계정을 팔로우하면 좋을까?

  • PDF가 어딘가에 있나? 빌드 지침은 보이는데 실제 파일은 안 보임