<div align='center'>
<img src="https://raw.githubusercontent.com/datawhalechina/diy-llm/HEAD/docs/public/diy-llm.png" alt="alt text" width="100%">
<h1>Diy-LLM</h1>
<p>
<a href="./README.md"><img src="https://img.shields.io/badge/%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87-0969da?style=for-the-badge" alt="중국어"></a>
<a href="./README_EN.md"><img src="https://img.shields.io/badge/English-d1d5db?style=for-the-badge" alt="영어"></a>
</p>
</div>
<div align="center">
<img src="https://img.shields.io/github/stars/datawhalechina/diy-llm?style=flat&logo=github" alt="GitHub stars"/>
<img src="https://img.shields.io/github/forks/datawhalechina/diy-llm?style=flat&logo=github" alt="GitHub forks"/>
<img src="https://img.shields.io/badge/language-Chinese-brightgreen?style=flat" alt="언어"/>
<a href="https://github.com/datawhalechina/diy-llm"><img src="https://img.shields.io/badge/GitHub-Project-blue?style=flat&logo=github" alt="GitHub Project"></a>
</div>
<div align="center">
<p><a href="https://datawhalechina.github.io/diy-llm/">📚 온라인 학습 주소</a></p>
<h3>📚 대규모 언어 모델을 체계적으로 배우는 방법</h3>
<p><em>중국어 학습자를 위해 맞춤 제작된 "LLM 연금술 공방"</em></p>
</div>
저희는 이 CS336 중국어 강좌가 단순히 스탠퍼드 원본의 "한국화 버전"을 넘어, 중국어 학습자에게 최적화된 "LLM 연금술 공방"이 되기를 바랍니다. 이곳에서 여러분은 이해를 직접 단련하고, 코드를 다듬고, 난이도를 조절하여, 마침내 자신만의 대규모 모델 '진단(眞丹)'을 연금하게 될 것입니다.
📋 사전 요구 사항 (Prerequisites)
- Python 프로그래밍: Python과 소프트웨어 엔지니어링 능력을 숙련되게 습득해야 합니다.
- 심층 학습 기초: PyTorch에 익숙하고, 신경망(Neural Network)의 기본 원리를 이해하고 있어야 합니다.
- 수학적 기초: 선형대수학(Linear Algebra), 확률통계(Probability and Statistics), 미적분학(Calculus) 지식이 필요합니다.
- 머신러닝 (Machine Learning): 머신러닝 및 심층 학습의 기본 지식에 대한 탄탄한 이해가 요구됩니다.
- GPU 프로그래밍 (선택 사항): CUDA 기초 개념을 알고 있으면 더욱 좋지만, 몰라도 괜찮습니다. 본 프로젝트에는 입문 튜토리얼도 제공됩니다.
📚 강좌 비전 (Course Vision)
- 핵심 이론과 실습의 균형: 원본 강좌의 기술적 깊이는 온전히 유지하되, 중국어 학습자의 사고방식에 더 적합한 방식으로 지식 체계를 재구성합니다. 필요한 수학 및 심층 학습 사전 지식은 저희가 보충하여 학습 곡선을 부드럽게 만들고, 진지하게 참여하는 모든 사람이 따라올 수 있도록 할 것입니다.
- 체계적인 지식 구조 구축: LLM이라는 방대한 프로젝트를 개별적으로 접근하고 이해할 수 있는 모듈들로 분해합니다. 과정을 마치면 LLM에 대한 완전한 지식 지도를 갖게 될 것입니다.
- 코드 기반 학습, 이론과 실습의 통합: 강좌의 핵심은 "코드로 생각하는 것"입니다. 모든 과제에서 저희는 구현 코드뿐만 아니라, 코드를 한 줄씩 작성할 때의 사고 과정까지 공유할 것입니다.
- 중국어 환경에 맞춘 현지화 개조: 중국어 네트워크 환경, 학습자들이 보유한 컴퓨팅 자원, 그리고 독특한 오픈소스 생태계를 고려하여 더욱 현실적인 해결책과 사례를 제공합니다 (예: Qwen, DeepSeek 등 중국의 우수한 모델들에 대한 논의).
🎯 프로젝트 의미 (Project Significance)
이 강좌를 마치면 무엇을 얻게 될까요?
- 탄탄한 기술적 기반: 자신만의 LLM을 직접 "구축"해 볼 수 있으며, 각 핵심 구성 요소에 대해 완벽하게 이해하게 됩니다.
- 소중한 엔지니어링 경험: 데이터 처리부터 모델 훈련, 배포 최적화까지, 대기업 수준의 전 과정 실전 기술을 습득합니다.
- 돋보이는 산업 경쟁력: 대규모 모델 개발의 핵심 역량을 갖추게 되어 원하는 대기업이나 팀에 진입하는 길을 열어줍니다.
- 명확한 연구 시야: LLM 분야에 대한 체계적인 인지 능력을 갖춰, 미래 심층 연구를 위한 견고한 기반을 다집니다.
📖 커리큘럼 목차
| 챕터 | 핵심 내용 | 연계 과제 | 상태 |
|---|
| 서론 | 프로젝트 배경, 학습 로드맵, 사전 지식 | - | ✅ |
| ... | > 상태 범례 설명: ✅ 완료 🔄 업데이트 중 📝 보완 필요 🚧 준비 중 ⏸️ 일시 중단 | | |
📝 과제 개요
| 과제 | 핵심 임무 | 상태 |
|---|
| 과제1: LLM 직접 구현 | 토크나이저(tokenizer), 모델 아키텍처(model architecture), 옵티마이저(optimizer)를 구현하여 초간단 언어 모델을 훈련하기 | ✅ |
| ... | | |
🚀 빠른 시작
git clone https://github.com/datawhalechina/diy-llm.git
cd diy-llm
...
학습 경로
1️⃣ 이론 학습 → 챕터 순서에 따라 docs/zh/ 디렉토리의 중국어 문서를 읽습니다 (영어 버전은 docs/en/).
2️⃣ 실습 연습 → coursework/ 디렉토리 아래의 6개 과제를 완료합니다.
3️⃣ 심층 이해 → 코드 구현을 읽고 각 컴포넌트의 설계를 이해합니다.
프로젝트 구조
diy-llm/
├── docs/ # 온라인 문서
│ ├── zh/ # 중국어 문서 (기본값)
...
PDF 버전 다운로드
본 튜토리얼은 오프라인 읽기와 인쇄 학습에 편리하도록 PDF 버전을 제공합니다. 다양한 마케팅 계정들이 워터마크를 추가하여 판매하는 것을 방지하기 위해, 저희는 PDF 파일에 독서에 지장을 주지 않는 Datawhale 오픈소스 로고 워터마크를 특별히 추가했으니 양해 부탁드립니다~
📥 Diy-LLM 강의 자료 PDF: https://github.com/datawhalechina/diy-llm/releases/latest/
🔗 관련 링크
❓ 자주 묻는 질문
<details>
<summary><b>Q: GPU 없이 학습할 수 있나요?</b></summary>
이론 부분은 정상적으로 학습할 수 있으며, 과제 중 일부 내용은 CPU에서 디버깅할 수 있지만, 전체적인 훈련에는 GPU가 필요합니다. 클라우드 서비스 플랫폼 사용을 권장합니다.
</details>
<details>
<summary><b>Q: 원 버전 CS336과 무엇이 다른가요?</b></summary>
저희는 원 버전의 기술적 깊이는 유지하면서, 중국어 학습자를 위해 현지화 개조를 진행했습니다. 여기에는 중국어 설명, 과제 구현, 더 상세한 참고 자료 출처, 국내 모델 사례 등이 포함됩니다.
</details>
💬 독자 교류 그룹
Diy-LLM 독자 교류 그룹에 참여하여 여러분과 함께 학습하고 질문을 해결해 나가시길 환영합니다:
<div align="center">
<table>
<tr>
<td align="center"><img src="https://raw.githubusercontent.com/datawhalechina/diy-llm/HEAD/docs/public/%E8%AF%BB%E8%80%85%E4%BA%A4%E6%B5%81%E7%BE%A41.jpg" alt="독자 교류 그룹 1 QR 코드" width="280"><br>독자 교류 그룹 1</td>
<td align="center"><img src="https://raw.githubusercontent.com/datawhalechina/diy-llm/HEAD/docs/public/%E8%AF%BB%E8%80%85%E4%BA%A4%E6%B5%81%E7%BE%A42.jpg" alt="독자 교류 그룹 2 QR 코드" width="280"><br>독자 교류 그룹 2</td>
</tr>
</table>
</div>
그룹 1이 만원이 되면 그룹 2에 참여할 수 있습니다. 두 그룹의 QR 코드가 모두 만료되었거나 가득 찬 경우, 아래 책임자 중 한 분에게 위챗(WeChat)으로 연락 주시고 (비고: 「diy-llm」), 저희가 그룹에 초대해 드리겠습니다.
| 담당자 | 위챗 ID |
|---|
| 서호(徐虎) | xuhu96736 |
| ... | |
👥 기여자
기여자 명단
<table border="0">
<tbody>
<tr align="center" >
<td>
<a href="https://github.com/xuhu0115"><img width="70" height="70" src="https://github.com/xuhu0115.png?s=40" alt="pic"></a><br>
<a href="https://github.com/xuhu0115">서호(徐虎)</a>
<p>프로젝트 책임자<br> Datawhale 멤버<br> 상하이교통대학교 <br> 담당 내용: 제1, 3, 9, 12, 14, 15장; 과제 5, 6; 전체 내용 검토</p>
</td>
<td>
<a href="https://github.com/kangkang-Adam"><img width="70" height="70" src="https://github.com/kangkang-Adam.png?s=40" alt="pic"></a><br>
<a href="https://github.com/kangkang-Adam">이성강(李盛康)</a>
<p>프로젝트 책임자<br> Datawhale 멤버<br> 시안우전대학교 <br> 담당 내용: 제4, 6, 7, 8, 13장; 과제 2, 4</p>
</td>
<td>
<a href="https://github.com/1iyouzhen"><img width="70" height="70" src="https://github.com/1iyouzhen.png?s=40" alt="pic"></a><br>
<a href="https://github.com/1iyouzhen">리우쩐(黎又榛)</a>
<p>프로젝트 책임자<br> Datawhale 멤버 <br>담당 내용: 제2, 5, 10, 11, 13장; 과제 1, 3; </p>
</td>
</tr>
</tbody>
</table>
커뮤니티 기여
- @aimetrics님께 감사드립니다. 과제 1의 train.py에 Macbook 장치용 MPS 지원을 추가해 주셨습니다.
- @FuTseYi(Datawhale 멤버)님께 웹사이트 마이그레이션, 배포 및 리팩토링 지원에 감사드립니다.
- @jiangyinhe님께 제16장 확장 내용인 《LLM의 미래 - Lecun》 정리 참여에 감사드리며, 중국어 버전 내용을 바탕으로 제1장과 서론의 영어 번역을 구현해 주셨습니다.
- @Excelius-Wang님께 C-EVAL 중국어 벤치마크 소개를 보충하고 과제6에 연결해 주신 점에 감사드립니다.
참고: 프로젝트에 기여한 모든 개발자분들께 감사드리며, 커뮤니티의 모든 분들의 적극적인 참여와 기여를 환영합니다!
모든 형태의 기여를 환영합니다! 문서 개선, 코드 최적화, 버그 수정 또는 새로운 내용 추가 등 모든 것이 프로젝트에 귀중한 지원이 됩니다.
기여 방법
- 문제 보고: 문서 오류, 코드 버그 또는 개선 제안을 발견했다면 Issue를 제출해 주세요.
- 코드 제출: 본 저장소를 Fork하고, 자신만의 기능 브랜치를 생성한 후 변경 사항을 커밋하고 Pull Request를 보내주세요.
- 문서 보완: 문서 개선, 내용 번역 또는 예제 추가에 도움을 주세요.
- 경험 공유: 토론 공간에서 학습 경험과 실습 노하우를 공유해 주세요.
기여 가이드라인
- 코드 제출 전에는 일관된 코딩 스타일을 유지했는지 확인해 주세요.
- 새로운 내용을 추가할 때는 기존 문서 형식을 따라주세요.
- PR을 제출할 때는 명확한 설명과 변경 사항 설명을 제공해 주세요.
- 큰 수정 방안에 대해서는 Issue에서 논의하는 것을 환영합니다.
📝 업데이트 로그
프로젝트는 지속적으로 업데이트되고 있으며, 최신 진행 상황은 GitHub Releases 또는 커밋 기록을 확인해 주세요.
📄 라이선스
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0%"><img alt="크리에이티브 커먼즈 공통 라이선스" style="border-width:0" src="https://img.shields.io/badge/license-CC%20BY--NC--SA%204.0-lightgrey" /></a>
본 작품은 크리에이티브 커먼즈 저작자표시-비영리적 사용-동일조건변경허락 4.0 국제 라이선스에 따라 허가됩니다.
🙏 감사 인사
- Stanford CS336 강의 팀에게 우수한 원본 강좌를 제공해 주셔서 감사합니다.
- 특히 @Sm1les님께 본 프로젝트의 도움과 지원에 깊이 감사드립니다.
- 프로젝트에 기여한 모든 개발자분들께 감사드립니다.
- 오픈소스 커뮤니티의 지지와 피드백에 감사드립니다.
⭐ Star 기록
본 프로젝트가 도움이 되었다면, Star ⭐️를 눌러 응원해 주세요!
<a href="https://www.star-history.com/?repos=datawhalechina%2Fdiy-llm&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=datawhalechina/diy-llm&type=date&theme=dark&legend=top-left&sealed_token=ZaKMAVlJ7ht4jbVMmrIgbWlsmeGT0P-zVEivYCbfcgbt7tsA67sQo1rwoHTT5E5ajegRha9nPoc_IKk-fkvfKfddLlLONIBjPzt4QnXtwox4VKQr78nKyugDQvaziK1vjbWMPuzwwJQssk6wgPJyD2evUEO7R72ZdpHhMMABx5ZAX1uQJBG_DdDaheA1" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=datawhalechina/diy-llm&type=date&legend=top-left&sealed_token=ZaKMAVlJ7ht4jbVMmrIgbWlsmeGT0P-zVEivYCbfcgbt7tsA67sQo1rwoHTT5E5ajegRha9nPoc_IKk-fkvfKfddLlLONIBjPzt4QnXtwox4VKQr78nKyugDQvaziK1vjbWMPuzwwJQssk6wgPJyD2evUEO7R72ZdpHhMMABx5ZAX1uQJBG_DdDaheA1" />
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=datawhalechina/diy-llm&type=date&legend=top-left&sealed_token=ZaKMAVlJ7ht4jbVMmrIgbWlsmeGT0P-zVEivYCbfcgbt7tsA67sQo1rwoHTT5E5ajegRha9nPoc_IKk-fkvfKfddLlLONIBjPzt4QnXtwox4VKQr78nKyugDQvaziK1vjbWMPuzwwJQssk6wgPJyD2evUEO7R72ZdpHhMMABx5ZAX1uQJBG_DdDaheA1" />
</picture>
</a>
<div align="center">
<p>더 많은 사람이 대규모 언어 모델(LLM) 구축 기술을 체계적으로 학습할 수 있도록</p>
<p>Made with ❤️ by the Datawhale</p>
</div>