Open Source... 여기까지 어떻게 왔나요?

발행: (2026년 2월 3일 오전 05:45 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

소개

GitHub의 Octoberfest 해커톤에서 오픈 소스 프로젝트가 눈에 띄었는데, 바운티가 보상으로 지급되었기 때문입니다. 저장소를 다운로드했고, 몇 달 후에 작업을 시작할 수 있었습니다.

프로젝트에는 Discord 채널이 있어 프로젝트와 관련된 모든 내용이 매일 게시되며, 우리 모두가 진행 상황이나 아이디어를 공유할 수 있습니다; 마치 머신러닝 프레임워크나 라이브러리를 개발하는 팀과 함께 일하는 것과 같습니다.

문서를 읽어보니, 내 로컬 저장소와 비교했을 때 tinygrad가 텐서를 머신 코드( GPU 커널)로 변환하는 방법에 관한 중요한 파일 몇 개가 누락되어 있었습니다.

저장소 업데이트

# Ver el último commit o los últimos commits de la rama master
git log -1 origin/master --format="%h%n%an%n%ad%n%s" --date=iso

# Guardar cambios locales
git stash save "aquí el mensaje"

# Descargar cambios (fetch o pull) y mezclar
git fetch origin master   # o git pull origin master
git merge master

# Aplicar los cambios guardados
git stash apply stash@{#}

바운티 선택

  1. 바운티와 관련된 키워드를 포함하는 로컬 파일을 검색합니다.

    find . -name "speed_v_torch" -type f
    grep -r "test_sum" .github/workflows/
  2. 관련된 것이 없을 경우 히스토리를 확인합니다:

    git log -1 --pretty=format:"%cd" -- test/test_speed_v_torch.py
  3. 문제 이해하기:

    • 누가 원인인가?
    • 왜 발생하는가?

코드 분석

주요 구성 요소 식별

질문찾아볼 내용
주요 입력args, 텐서
주요 출력return, 결과
변환합계, 컴파일, 최적화
유지 상태캐시, 카운터
의존성imports, 기타 클래스

미스터리 함수

  1. 출처 추적: import를 검토하고 정의를 찾습니다.
  2. 책임: 어떤 클래스에 속하는지와 역할을 이해합니다.
  3. 사용: 누가 만들었는지, 무엇을 포함하는지, 누가 사용하고 어디서 수정되는지 파악합니다.

디자인 패턴 및 팩토리 메서드

  • from_, create_, build_와 같은 접두사가 있는 메서드를 찾습니다.
  • 일반적인 패턴(싱글톤, 팩토리 등)을 식별합니다.

데이터 흐름

  • inputs → outputs를 매핑합니다.
  • 텐서 흐름을 보여주는 마인드 다이어그램을 그립니다.

설정 및 테스트

  • 상수와 설정(constants, settings)을 찾습니다.
  • test/ 폴더를 검토하여 사용 예시를 확인합니다.
  • try/except 블록을 분석하여 오류 처리 방식을 이해합니다.

내부 문서화

  • 코드 조각 하나하나를 5살 아이에게 설명하듯이 풀어 씁니다.
  • 이 연습은 이해도를 굳히고 프로그래밍 로직을 향상시키는 데 도움이 됩니다.

사용 도구

  • 버전 관리와 히스토리 탐색을 위한 Git.
  • 단계별 디버깅을 위한 PDB(Vim 사용): n, l, p, w, r.
  • 파일 트리에서 빠른 검색을 위한 Find / Grep.

다음 단계

  • tinygrad에서 텐서의 데이터 흐름을 분석합니다.
  • GPU AMD용 사용자 가이드를 검토합니다: kernel-descriptor.

읽어 주셔서 감사합니다

프로젝트가 진행되는 동안 발견한 내용을 계속 공유하겠습니다.

Back to Blog

관련 글

더 보기 »