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@{#}
바운티 선택
-
바운티와 관련된 키워드를 포함하는 로컬 파일을 검색합니다.
find . -name "speed_v_torch" -type f grep -r "test_sum" .github/workflows/ -
관련된 것이 없을 경우 히스토리를 확인합니다:
git log -1 --pretty=format:"%cd" -- test/test_speed_v_torch.py -
문제 이해하기:
- 누가 원인인가?
- 왜 발생하는가?
코드 분석
주요 구성 요소 식별
| 질문 | 찾아볼 내용 |
|---|---|
| 주요 입력 | args, 텐서 |
| 주요 출력 | return, 결과 |
| 변환 | 합계, 컴파일, 최적화 |
| 유지 상태 | 캐시, 카운터 |
| 의존성 | imports, 기타 클래스 |
미스터리 함수
- 출처 추적:
import를 검토하고 정의를 찾습니다. - 책임: 어떤 클래스에 속하는지와 역할을 이해합니다.
- 사용: 누가 만들었는지, 무엇을 포함하는지, 누가 사용하고 어디서 수정되는지 파악합니다.
디자인 패턴 및 팩토리 메서드
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.
읽어 주셔서 감사합니다
프로젝트가 진행되는 동안 발견한 내용을 계속 공유하겠습니다.