├── .github
├── ISSUE_TEMPLATE
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── feature_request.md
└── workflows
│ └── ci-cd.yml
├── .gitignore
├── .pre-commit-config.yaml
├── README.md
├── projects
└── README.md
└── pyproject.toml
/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## 🎯 Description
2 | -
3 |
4 | ## 🔨 Change logs
5 | -
6 |
7 | ## 👥 To Reviewer
8 | -
9 |
10 | ## 🔗 Related Issue
11 | - Closed | Fixed: #
12 | - See also: #
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Issue Template
3 | about: Default Issue Template
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## 🧐 Background
11 | -
12 |
13 | ## 🚧 To-do
14 | - [ ]
15 | - [ ]
16 |
17 | ## 💬 See also
18 | - #
19 |
--------------------------------------------------------------------------------
/.github/workflows/ci-cd.yml:
--------------------------------------------------------------------------------
1 | name: CI/CD Workflow
2 |
3 | on:
4 | push:
5 | branches: [ main, deployment ]
6 | pull_request:
7 | branches: [ main, deployment ]
8 |
9 | jobs:
10 | lint-and-test:
11 | strategy:
12 | matrix:
13 | os: [ubuntu-latest]
14 | # os: [ubuntu-latest, macos-latest, windows-latest]
15 | python-version: ['3.12']
16 | # python-version: ['3.10', '3.11']
17 |
18 | runs-on: ${{ matrix.os }}
19 | env:
20 | PYTHONPATH: ${{ github.workspace }}
21 |
22 | steps:
23 | - uses: actions/checkout@v4
24 |
25 | - name: Hadolint
26 | uses: hadolint/hadolint-action@v3.1.0
27 | continue-on-error: true
28 |
29 | - name: Set up Python ${{ matrix.python-version }}
30 | uses: actions/setup-python@v5
31 | with:
32 | python-version: ${{ matrix.python-version }}
33 |
34 | - name: Install Poetry
35 | uses: snok/install-poetry@v1
36 | with:
37 | virtualenvs-create: true
38 | virtualenvs-in-project: true
39 |
40 | - name: Load cached venv
41 | id: cached-poetry-dependencies
42 | uses: actions/cache@v3
43 | with:
44 | path: .venv
45 | key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
46 |
47 | - name: Install dependencies
48 | if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
49 | run: poetry install --no-interaction --no-root
50 |
51 | - name: Install package
52 | run: |
53 | poetry install --no-root
54 |
55 | - name: Run linters
56 | run: |
57 | poetry run ruff check --fix .
58 | poetry run ruff format .
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Cache files
2 | *.pyc
3 | *.exe
4 | *.log
5 | *__pycache__
6 | .pytest_cache
7 | model_cache
8 |
9 | # Environment
10 | env
11 | .env
12 | *poetry.lock
13 |
14 | # Ruff
15 | -unsafe-fixes
16 | .ruff_cache
17 | .coverage
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | exclude: |
2 | (?x)(
3 | # Docs
4 | ^.*\.md$|
5 | ^docs/|
6 |
7 | # Notebooks & WandB
8 | ^notebooks/|
9 | ^experiments/|
10 | ^wandb/|
11 | ^logs/|
12 | ^runs/|
13 |
14 | # Dataset & Model
15 | ^data/|
16 | ^datasets/|
17 | ^checkpoints/|
18 | ^weights/|
19 | ^.*\.pth$|
20 | ^.*\.ckpt$|
21 | ^.*\.h5$|
22 | ^.*\.onnx$|
23 |
24 | # Cache files
25 | ^.pytest_cache/|
26 | ^__pycache__/|
27 |
28 | ^\.env|
29 | ^\.vscode/
30 | )
31 |
32 | repos:
33 | - repo: https://github.com/pre-commit/pre-commit-hooks
34 | rev: v5.0.0
35 | hooks:
36 | - id: trailing-whitespace
37 | - id: end-of-file-fixer
38 | - id: check-yaml
39 | - id: check-toml
40 | - id: debug-statements
41 | - id: check-added-large-files
42 | args: ['--maxkb=1024']
43 |
44 |
45 | - repo: https://github.com/astral-sh/ruff-pre-commit
46 | rev: v0.9.9
47 | hooks:
48 | - id: ruff
49 | args: [--fix, --exit-non-zero-on-fix]
50 | - id: ruff-format
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
Deep Learning Efficient Inference
3 |
4 |
5 |

6 |

7 |

8 |

9 |

10 |

11 |

12 |

13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 최근 AI 기술이 빠르게 발전하며 딥러닝 모델의 규모와 성능이 폭발적으로 증가하고 있습니다. 그러나 모델이 커질수록 **메모리 사용량**, **추론 시간**, **에너지 소모**가 급격히 증가하기 때문에, 효율적인 **경량화 기법**과 **추론 최적화**에 대한 수요도 높아지고 있습니다.
21 | 가지치기(Pruning), 양자화(Quantization), 지식 증류(Knowledge Distillation), 네트워크 구조 검색(NAS) 등을 통해 모델을 가볍게 만들고, 하드웨어 제약이 있는 환경에서도 충분한 성능을 낼 수 있게 하는 기술은 앞으로 더욱 중요해질 것입니다.
22 |
23 |
24 | ## 이번 시즌에 배울 지식 Introduction
25 | - **Pruning**: 모델 파라미터를 부분적으로 제거해 모델 크기를 줄이면서 성능은 최대한 유지하는 기법
26 | - **Quantization**: 파라미터를 낮은 정밀도로 표현해 계산량과 메모리 사용량을 절감하는 기법
27 | - **Knowledge Distillation**: 큰 모델의 지식을 작은 모델에 전이하여 경량화하면서도 높은 성능을 유지하는 기법
28 | - **Neural Architecture Search**: 다양한 아키텍처를 자동으로 탐색해 최적의 모델 구조를 찾는 기법
29 |
30 | 본 스터디에서는 이론적 지식뿐만 아니라, **실제 모델을 경량화하고 추론 효율을 개선**하는 일련의 실습 프로젝트를 통해 실전 감각을 키우려고 합니다.
31 |
32 |
33 | ## 왜 이걸 배워야 하는가?
34 | - 기업들의 효율적인 모델 서빙을 통해 클라우드 비용 절감과 엣지 디바이스 적용 필요성 증가
35 | - 대용량 데이터를 다루는 스타트업부터 대기업까지, AI 응용 분야 전반에서 모델 최적화 역량 요구 증가
36 | - LLM(대형 언어 모델), 컴퓨터 비전, 음성 인식 등 적용 범위가 넓고 활용 가치가 높음
37 |
38 |
39 | ## 배우면 어떤 이득이 있는가?
40 | - **AI 연구원**, **ML 엔지니어**, **Mobile/Edge device Developer**, **MLOps** 등 다양한 직무에 적용할 수 있는 스킬셋을 갖출 수 있습니다.
41 | - **인프라 비용** 최적화, on-device AI, IoT 솔루션 개발 등과 연계되어 국내외 주요 기업에 진출 가능성을 높일 수 있습니다.
42 | - 직접 경량화 프로젝트를 수행하면서, 현업에 필요한 실무 역량을 쌓을 수 있습니다.
43 |
44 |
45 | ## 🌟 프로젝트 개요
46 | 1. **이론 학습**: Pruning, Quantization, Knowledge Distillation, Network Architecture Search 등의 핵심 개념과 기법 학습
47 | - [MIT 6.5940 TinyML and Efficient Deep Learning Computing](https://hanlab.mit.edu/courses/2024-fall-65940) 강의를 기반으로 함
48 | 2. **실전 프로젝트 수행**: 실제 모델을 경량화하고 추론 최적화를 적용화해 경량화 전후 성능을 비교하는 프로젝트 수행 예정
49 | - 개인 또는 팀 단위로 프로젝트 제안 및 진행
50 |
51 |
52 | ## 🧑 팀 소개
53 |
54 | | 역할 | 이름 | LinkedIn |
55 | |---------------|------|-----------------------------------------------------------------------|
56 | | **Project Manager** | 박성수 | [Link](https://www.linkedin.com/in/seongsu-park/) |
57 | | **Member** | 김슬 | |
58 | | **Member** | 박동찬 | |
59 | | **Member** | 오새빛나 | |
60 | | **Member** | 윤남규 | |
61 | | **Member** | 이정수 | |
62 |
63 |
64 |
65 |
66 | ## 💻 주차별 계획
67 |
68 | | 날짜 | 내용 | Link |
69 | | -------- | -------- | ---- |
70 | | 2025/3/4 | OT | |
71 | | 2025/3/11 | Basics of Deep Learning
Transformers | [[Part 1]](https://github.com/Pseudo-Lab/EfficientML/discussions/3)
[[Part 2]](https://github.com/Pseudo-Lab/EfficientML/discussions/5) |
72 | | 2025/3/18 | Pruning and Sparsity (Part I)
Transformer Design Variants | [[Part 1]](https://github.com/Pseudo-Lab/EfficientML/discussions/6)
[[Part 2]](https://github.com/Pseudo-Lab/EfficientML/discussions/7) |
73 | | 2025/3/25 | ⭐ Magical Week 휴일 ⭐ | |
74 | | 2025/4/1 | Pruning and Sparsity (Part II)
Large language models
LLM Fine-Tuning | [[Part 1]](https://github.com/Pseudo-Lab/EfficientML/discussions/8)
[[Part 2]](https://github.com/Pseudo-Lab/EfficientML/discussions/9)|
75 | | 2025/4/8 | Quantization (Part I) | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/12) |
76 | | 2025/4/15 | Quantization (Part II) | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/13) |
77 | | 2025/4/22 | Neural Architecture Search (Part I) | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/14) |
78 | | 2025/4/29 | ⭐ Magical Week 휴일 ⭐ | |
79 | | 2025/5/6 | Neural Architecture Search (Part II) | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/20) |
80 | | 2025/5/13 | Knowledge Distillation | 미정 |
81 | | 2025/5/20 | MCUNet: TinyML on Microcontrollers | 미정 |
82 | | 2025/5/27 | TinyEngine and Parallel Processing | 미정 |
83 |
84 | > **매주 일정**:
85 | > - 스터디 전, 할당된 강의를 사전에 학습 (영어 자막 강의 + PPT 등)
86 | > - 스터디 시간에 강의 내용 토의 및 질의응답
87 | > - 개인 혹은 팀별 프로젝트 진행 상황 공유 및 피드백
88 |
89 |
90 | ## 💡 프로젝트
91 | | 제목 | 담당자 | Link |
92 | |---|---|---|
93 | | Face-based age classification | 박성수 | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/11) |
94 | | Practical Quantization of Open LLMs | 김슬 | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/19) |
95 | | Three Visions on One Edge | 박동찬 | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/18) |
96 | | Transformer Minimalism | 오새빛나 | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/16) |
97 | | | 윤남규 | |
98 | | Image Classification using simple models | 이정수 | [[Link]](https://github.com/Pseudo-Lab/EfficientML/discussions/17)|
99 |
100 |
105 |
106 |
107 | ## 🌱 참여 안내
108 |
109 |
111 |
112 | - 매주 화요일 오후 9시, 가짜연구소 Discord Room-IS 채널
113 | - 자유롭게 청강 가능합니다.
114 |
130 |
131 |
134 |
135 | ## About Pseudo Lab 👋🏼
136 |
137 | [Pseudo-Lab](https://pseudo-lab.com/) is a non-profit organization focused on advancing machine learning and AI technologies. Our core values of Sharing, Motivation, and Collaborative Joy drive us to create impactful open-source projects. With over 5k+ researchers, we are committed to advancing machine learning and AI technologies.
138 |
139 | Contributors 😃
140 |
141 |
142 |
143 |
144 |
145 |
148 |
--------------------------------------------------------------------------------
/projects/README.md:
--------------------------------------------------------------------------------
1 | 개인별 프로젝트 디렉토리를 만들어서 자유롭게 push하기 (디렉토리 이름: 프로젝트 이름)
2 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [project]
2 | name = "EfficientML"
3 | version = "0.1.0"
4 | description = ""
5 | authors = [
6 | {name = "Namgyu-Youn", email = "yynk2012@gmail.com"}
7 | ]
8 | readme = "README.md"
9 | packages = []
10 |
11 | [build-system]
12 | requires = ["poetry-core>=2.0.0,<3.0.0"]
13 | build-backend = "poetry.core.masonry.api"
14 |
15 | [tool.poetry.dependencies]
16 | python = ">=3.11.0,<3.13"
17 | torch = {version = "2.6.0+cpu", source = "pytorch"}
18 | ruff = "^0.9.9"
19 | pytest = "^8.3.4"
20 | python-dotenv = "^1.0.0"
21 |
22 | [tool.poetry.group.dev.dependencies]
23 | pytest = "^8.3.4"
24 | pytest-cov = "^6.0.0"
25 | pytest-asyncio = "^0.25.3"
26 |
27 | [[tool.poetry.source]]
28 | name = "pytorch"
29 | url = "https://download.pytorch.org/whl/cpu"
30 | priority = "explicit"
31 |
32 | [tool.ruff]
33 | line-length = 160
34 | target-version = "py310"
35 |
36 | lint.select = [
37 | "E", # pycodestyle
38 | "F", # pyflakes
39 | "UP", # pyupgrade
40 | "B", # flake8-bugbear
41 | "RUF", # Ruff-specific rules
42 | "I", # isort
43 | "C4", # flake8-comprehensions
44 | "N", # pep8-naming
45 | "S", # flake8-bandit
46 | ]
--------------------------------------------------------------------------------