ai-engineering-from-scratch: 0부터 AI 엔지니어링을 배우는 32K 스타 커리큘럼 (32K Stars)

ai-engineering-from-scratch는 AI 엔지니어링을 0부터 배울 수 있는 종합 온라인 커리큘럼입니다. 12개 페이즈, 100개 이상의 레슨, 각 레슨마다 실습 프로젝트가 포함되어 있습니다. 32K stars.

  • ⭐ 31915
  • Updated 2026-06-16

ai-engineering-from-scratch GitHub OG

ai-engineering-from-scratch: 0부터 AI 엔지니어링을 배우는 32K 스타 커리큘럼 (32K Stars) #

AI 엔지니어링을 배우고 싶지만, 어디서부터 시작해야 할지 모르겠나요? Udemy 강의를 사보고, 책을 읽어보고, 튜토리얼을 따라해보지만… 항상 중간에 포기하게 됩니다. 이유는 명확합니다. 체계적인 커리큘럼이 없기 때문입니다.

ai-engineering-from-scratch는 이 문제를 해결합니다. 0부터 시작해서 실제로 AI 시스템을 빌드하고, 배송하는 것까지, 단계별로 배울 수 있는 무료 오픈소스 커리큘럼입니다.

TL;DR #

ai-engineering-from-scratch는 AI 엔지니어링을 체계적으로 배우는 무료 커리큘럼입니다. 12개 페이즈, 100개 이상의 레슨, 각 레슨마다 실습 프로젝트가 포함되어 있습니다. Python부터 시작해 Docker, MLOps, LLM 파인튜닝까지, AI 엔지니어링의 전 과정을 다룹니다. 32,000개 이상의 별을 받으며 가장 인기 있는 AI 학습 커리큘럼 중 하나가 되었습니다.

핵심 특징:

  • 12개 페이즈의 체계적인 학습 경로
  • 100개 이상의 레슨 (각각 실습 프로젝트 포함)
  • Python 기초부터 MLOps까지
  • Agent Memory (로힛의 이전 프로젝트)와 자연스럽게 연동
  • Claude, Cursor, Codex, OpenClaw, Hermes 등 다양한 에이전트 스킬 제공
  • 각 레슨마다 “빌드하고 배송"하는 프로젝트

커리큘럼 구조: 어떻게 되어 있는가? #

ai-engineering-from-scratch는 12개 페이즈로 구성되어 있습니다:

Phase 0: Setup & Tooling (12 레슨) #

개발 환경 설정. Python, Git, Docker, 에이전트 도구 설치.

Phase 1-4: Foundations #

Python 프로그래밍, NumPy, Pandas, 데이터 시각화.

Phase 5-8: Machine Learning #

선형 회귀, 결정 트리, SVM, 앙상블 방법.

Phase 9-10: Deep Learning #

신경망, CNN, RNN, Transformer.

Phase 11-12: LLM & MLOps #

LLM 파인튜닝, 배포, 모니터링.

각 레슨의 구조 #

각 레슨은 다음과 같은 구조로 되어 있습니다:

Lesson Title
├── Theory (이론)
├── Code (실습 코드)
├── FIG_XXX (작업 샘플)
└── Build & Ship (프로젝트)

각 레슨을 마치면 실제로 무언가를 빌드하고 배송합니다. 이론만 배우고 끝나는 것이 아닙니다.

설치 및 설정 #

Python 설치 #

# Python 3.11+ 필요
python3 --version

# 가상 환경 생성
python3 -m venv venv
source venv/bin/activate

# 레포지토리 클론
git clone https://github.com/rohitg00/ai-engineering-from-scratch.git
cd ai-engineering-from-scratch
pip install -r requirements.txt

에이전트 스킬 설치 #

# Claude Code
# 커리큘럼 스킬을 에이전트에 로드

# Cursor
git clone https://github.com/rohitg00/ai-engineering-from-scratch.git

Docker #

docker build -t ai-engineering .
docker run -it ai-engineering

Docker로 실행하면 환경 설정이 전혀 필요 없습니다.

커리큘럼 상세 #

Phase 0: Setup & Tooling (12 레슨) #

  1. Python 설치 및 설정
  2. Git 및 GitHub
  3. VS Code / Cursor 설정
  4. 가상 환경
  5. pip 및 패키지 관리
  6. Jupyter Notebook
  7. Docker for AI
  8. 에이전트 도구 설치
  9. GitFlow 워크플로우
  10. 린터 및 포매터
  11. 테스트 프레임워크
  12. 첫 번째 프로젝트 빌드

Phase 1-4: Foundations #

각 페이즈마다 이론 레슨과 실습 프로젝트가 있습니다. 예를 들어:

  • NumPy: 배열 연산, 브로드캐스팅, 벡터화
  • Pandas: 데이터프레임 조작, 그룹바이, 병합
  • 시각화: matplotlib, seaborn

Phase 5-8: Machine Learning #

  • 선형 회귀: scikit-learn, MSE, R²
  • 결정 트리: overfitting, prune
  • SVM: 커널 트릭, 하이퍼파라미터
  • 앙상블: Random Forest, Gradient Boosting

Phase 9-10: Deep Learning #

  • 신경망: PyTorch, autograd
  • CNN: 이미지 분류
  • RNN: 시계열 예측
  • Transformer: attention mechanism

Phase 12: MLOps & Deployment (12 레슨) #

마지막 페이즈에서는 만든 AI 모델을 실제로 배포하고 모니터링합니다:

  1. 모델 패키징 (pickle, joblib)
  2. FastAPI로 REST API 생성
  3. Docker 컨테이너화
  4. Kubernetes 배포
  5. CI/CD 파이프라인
  6. 모델 모니터링 (Drift detection)
  7. A/B 테스트
  8. 모델 재학습 파이프라인
  9. 비용 최적화
  10. 보안 best practice
  11. 성능 벤치마킹
  12. 최종 프로젝트: 완전한 AI 서비스 배포

각 레슨마다 실습 프로젝트가 포함되어 있습니다. 예를 들어 Phase 12의 마지막 프로젝트는 “완전한 AI 서비스 배포"입니다. 모델을 FastAPI로 패키징하고, Docker로 컨테이너화하고, Kubernetes에 배포하고, 모니터링 대시보드를 설정합니다.

에이전트 스킬 #

ai-engineering-from-scratch는 다양한 AI 에이전트와 연동됩니다:

에이전트 스킬
Claude Code 커리큘럼 스킬
Cursor 코드 리뷰 스킬
Codex 실습 가이드
OpenClaw 프로젝트 생성
Hermes 학습 추적

에이전트 스킬을 설치하면, AI가 각 레슨을 안내하고 코드를 검토해 줍니다.

benchmarks: 학습 효율 비교 #

학습 경로별 효율 비교:

항목 전통적 강의 ai-engineering-from-scratch 향상률
학습 시간 6-12개월 3-6개월 2x
실습 비중 20% 80% 4x
프로젝트 수 2-3개 100개+ 50x
비용 $500-$2000 무료

아키텍처: 어떻게 작동하는가? #

┌─────────────────────────────────────────────────┐
│        ai-engineering-from-scratch Structure      │
├─────────────────────────────────────────────────┤
│  phases/                                         │
│  ├── 00-setup-and-tooling/                      │
│  │   ├── 01-python-basics/                      │
│  │   ├── 02-git-basics/                         │
│  │   └── ...                                    │
│  ├── 01-foundations/                            │
│  ├── 02-machine-learning/                       │
│  ├── 03-deep-learning/                          │
│  └── 04-llm-mlops/                              │
│                                                  │
│  FIG_XXX.py (작업 샘플)                          │
│  requirements.txt                                │
│  README.md                                       │
└─────────────────────────────────────────────────┘

각 페이즈는 독립적으로 학습할 수 있습니다. 원하는 페이즈부터 시작하면 됩니다.

사용 사례 #

사례 1: 완전 초보자 #

Python부터 시작해 12개 페이즈를 순서대로 학습합니다.

사례 2: 기존 개발자 #

Machine Learning 페이즈부터 시작하여 AI 엔지니어링으로 전환합니다.

사례 3: 데이터 사이언티스트 #

Deep Learning과 LLM 페이즈로 전문성을 확장합니다.

사례 4: 스타트업 founder #

AI 제품을 빠르게 프로토타이핑하기 위해 practical MLOps 페이즈만 학습합니다.

사례 5: 대학 교수 #

강의 커리큘럼으로 사용합니다. 각 레슨을 수업 과제로 사용하고, 에이전트 스킬로 학생들의 코드를 자동 검토합니다.

사례 6: 프리랜서 개발자 #

AI 엔지니어링을 새로운 서비스로 확장합니다. 커리큘럼을 따라 하며 실력을 쌓은 후, Upwork나 Fiverr에서 AI 프로젝트를 수주합니다.

Phase 12 심화: MLOps 파이프라인 구축하기 #

ai-engineering-from-scratch의 Phase 12는 실제 프로덕션 환경에서 AI 모델을 운영하는 방법을 가르칩니다. 여기서는 MLOps 파이프라인을 구체적으로 어떻게 구축하는지 자세히 다룹니다.

FastAPI 모델 서버 구축 #

학습한 모델을 REST API로 제공하는 FastAPI 서버 구현:

# models/predictor.py
import joblib
import numpy as np
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="AI Prediction Service")

# 모델 로드
model = joblib.load("models/trained_model.pkl")
tokenizer = joblib.load("models/tokenizer.pkl")

class PredictionRequest(BaseModel):
    text: str
    temperature: float = 0.7
    top_k: int = 50

class PredictionResponse(BaseModel):
    prediction: str
    confidence: float
    tokens: list[str]

@app.post("/predict", response_model=PredictionResponse)
def predict(request: PredictionRequest):
    """단일 텍스트 예측 엔드포인트"""
    try:
        encoded = tokenizer.encode_plus(
            request.text,
            return_tensors="np",
            padding="max_length",
            max_length=512,
            truncation=True
        )
        
        input_ids = np.array(encoded["input_ids"])
        attention_mask = np.array(encoded["attention_mask"])
        
        prediction = model.predict(input_ids, attention_mask)
        confidence = float(np.max(prediction))
        predicted_class = int(np.argmax(prediction))
        
        return PredictionResponse(
            prediction=str(predicted_class),
            confidence=confidence,
            tokens=[request.text[:20]]
        )
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.get("/health")
def health_check():
    """서비스 상태 확인 엔드포인트"""
    return {"status": "healthy", "model_version": "1.0.0"}

Docker 컨테이너화 #

# Dockerfile
FROM python:3.12-slim

WORKDIR /app

# 의존성 설치
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 애플리케이션 복사
COPY . .

# 모델 파일 복사
COPY models/ ./models/

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

빌드 및 실행:

docker build -t ai-service:v1 .
docker run -p 8000:8000 -v $(pwd)/models:/app/models ai-service:v1

Kubernetes 배포 매니페스트 #

# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ai-prediction-service
  labels:
    app: ai-prediction
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ai-prediction
  template:
    metadata:
      labels:
        app: ai-prediction
    spec:
      containers:
      - name: ai-service
        image: ai-service:v1
        ports:
        - containerPort: 8000
        resources:
          requests:
            memory: "512Mi"
            cpu: "250m"
          limits:
            memory: "1Gi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 5
          periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: ai-prediction-service
spec:
  selector:
    app: ai-prediction
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8000
  type: LoadBalancer

CI/CD 파이프라인: GitHub Actions #

# .github/workflows/mlops.yml
name: MLOps Pipeline

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      
      - name: Install dependencies
        run: pip install -r requirements.txt
      
      - name: Run tests
        run: pytest tests/ -v --cov=models --cov-report=xml
      
      - name: Upload coverage
        uses: codecov/codecov-action@v4

  train:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Train model
        run: python scripts/train.py
      
      - name: Save model artifact
        uses: actions/upload-artifact@v4
        with:
          name: trained-model
          path: models/

  deploy:
    needs: train
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      
      - name: Download model
        uses: actions/download-artifact@v4
        with:
          name: trained-model
          path: models/
      
      - name: Build and push Docker image
        run: |
          docker build -t ghcr.io/${{ github.repository }}/ai-service:${{ github.sha }} .
          echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
          docker push ghcr.io/${{ github.repository }}/ai-service:${{ github.sha }}
      
      - name: Deploy to Kubernetes
        run: |
          kubectl set image deployment/ai-prediction-service \
            ai-service=ghcr.io/${{ github.repository }}/ai-service:${{ github.sha }}

심화 학습: Transformer 아키텍터 심층 분석 #

Phase 9-10의 Deep Learning 부분에서 다루는 Transformer 아키텍처를 더 깊이 이해하기 위한 내용을 추가합니다.

Self-Attention 수식 #

Transformer의 핵심인 Self-Attention 메커니즘:

$$Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V$$

여기서 Q(Query), K(Key), V(Value)는 각각 입력 임베딩을 선형 변환하여 생성됩니다:

import torch
import torch.nn as nn
import math

class MultiHeadAttention(nn.Module):
    """다중 헤드 어텐션 구현"""
    
    def __init__(self, d_model=512, n_heads=8):
        super().__init__()
        self.d_model = d_model
        self.n_heads = n_heads
        self.d_k = d_model // n_heads
        
        self.W_q = nn.Linear(d_model, d_model)
        self.W_k = nn.Linear(d_model, d_model)
        self.W_v = nn.Linear(d_model, d_model)
        self.W_o = nn.Linear(d_model, d_model)
    
    def scaled_dot_product_attention(self, Q, K, V, mask=None):
        """스케일된 닷 프로덕트 어텐션"""
        scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k)
        
        if mask is not None:
            scores = scores.masked_fill(mask == 0, -1e9)
        
        attention = torch.softmax(scores, dim=-1)
        return torch.matmul(attention, V), attention
    
    def forward(self, Q, K, V, mask=None):
        batch_size = Q.size(0)
        
        # 선형 변환 후 멀티헤드로 분할
        Q = self.W_q(Q).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        K = self.W_k(K).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        V = self.W_v(V).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        
        # 어텐션 계산
        attn_output, attention_weights = self.scaled_dot_product_attention(Q, K, V, mask)
        
        # 헤드를 다시 결합
        attn_output = attn_output.transpose(1, 2).contiguous().view(batch_size, -1, self.d_model)
        
        return self.W_o(attn_output), attention_weights

Positional Encoding #

Transformer는 순서 정보를 직접 담고 있지 않으므로 위치 인코딩을 추가합니다:

class PositionalEncoding(nn.Module):
    """사인/코사인 위치 인코딩"""
    
    def __init__(self, d_model, max_len=5000, dropout=0.1):
        super().__init__()
        self.dropout = nn.Dropout(dropout)
        
        pe = torch.zeros(max_len, d_model)
        position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
        div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
        
        pe[:, 0::2] = torch.sin(position * div_term)
        pe[:, 1::2] = torch.cos(position * div_term)
        pe = pe.unsqueeze(0)
        self.register_buffer('pe', pe)
    
    def forward(self, x):
        x = x + self.pe[:, :x.size(1), :]
        return self.dropout(x)

모델 성능 벤치마킹 프레임워크 #

학습한 모델의 성능을 체계적으로 평가하기 위한 벤치마킹 도구:

# benchmarking/model_benchmark.py
import time
import numpy as np
from sklearn.metrics import classification_report, confusion_matrix
import torch

class ModelBenchmark:
    """모델 성능 벤치마킹 클래스"""
    
    def __init__(self, model, tokenizer, device="cuda"):
        self.model = model
        self.tokenizer = tokenizer
        self.device = device
    
    def benchmark_accuracy(self, test_dataset):
        """정확도 벤치마크"""
        self.model.eval()
        correct = 0
        total = 0
        predictions = []
        true_labels = []
        
        with torch.no_grad():
            for texts, labels in test_dataset:
                inputs = self.tokenizer(
                    texts, return_tensors="pt", 
                    padding=True, truncation=True, max_length=512
                ).to(self.device)
                
                outputs = self.model(**inputs)
                preds = torch.argmax(outputs.logits, dim=1)
                
                correct += (preds == labels.to(self.device)).sum().item()
                total += labels.size(0)
                predictions.extend(preds.cpu().numpy())
                true_labels.extend(labels.numpy())
        
        accuracy = correct / total
        report = classification_report(true_labels, predictions, output_dict=True)
        
        return {
            "accuracy": accuracy,
            "classification_report": report,
            "confusion_matrix": confusion_matrix(true_labels, predictions).tolist()
        }
    
    def benchmark_latency(self, test_dataset, num_runs=100):
        """레이턴시 벤치마킹"""
        self.model.eval()
        latencies = []
        
        with torch.no_grad():
            for texts, _ in test_dataset:
                inputs = self.tokenizer(
                    texts, return_tensors="pt",
                    padding=True, truncation=True, max_length=512
                ).to(self.device)
                
                # Warm-up
                _ = self.model(**inputs)
                
                # Timing
                start = time.perf_counter()
                for _ in range(num_runs):
                    _ = self.model(**inputs)
                end = time.perf_counter()
                
                avg_latency = (end - start) / num_runs
                latencies.append(avg_latency)
        
        return {
            "avg_latency_ms": np.mean(latencies) * 1000,
            "p50_latency_ms": np.percentile(latencies, 50) * 1000,
            "p99_latency_ms": np.percentile(latencies, 99) * 1000,
            "throughput_rps": 1.0 / np.mean(latencies)
        }
    
    def full_report(self, test_dataset):
        """종합 벤치마크 리포트"""
        accuracy_report = self.benchmark_accuracy(test_dataset)
        latency_report = self.benchmark_latency(test_dataset)
        
        return {
            "accuracy": accuracy_report,
            "latency": latency_report,
            "summary": {
                "accuracy_pct": f"{accuracy_report['accuracy']*100:.2f}%",
                "avg_latency": f"{latency_report['avg_latency_ms']:.2f}ms",
                "throughput": f"{latency_report['throughput_rps']:.1f} req/s"
            }
        }

LLM 파인튜닝 심화: LoRA와QLoRA #

Phase 11-12에서 다루는 LLM 파인튜닝의 현대적 기법:

# finetuning/lora_finetune.py
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch

def setup_lora_finetuning(model_name="meta-llama/Llama-3-8B"):
    """LoRA 파인튜닝 설정"""
    
    # 4비트 양자화 설정
    quant_config = BitsAndBytesConfig(
        load_in_4bit=True,
        bnb_4bit_quant_type="nf4",
        bnb_4bit_compute_dtype=torch.float16,
        bnb_4bit_use_double_quant=True
    )
    
    # 모델 로드 (양자화)
    model = AutoModelForCausalLM.from_pretrained(
        model_name,
        quantization_config=quant_config,
        device_map="auto"
    )
    
    # 모델 준비
    model = prepare_model_for_kbit_training(model)
    
    # LoRA 설정
    lora_config = LoraConfig(
        r=16,
        lora_alpha=32,
        target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
        lora_dropout=0.05,
        bias="none",
        task_type="CAUSAL_LM"
    )
    
    # LoRA 적용
    model = get_peft_model(model, lora_config)
    model.print_trainable_parameters()
    
    return model

def train_with_trainer(model, train_dataset, output_dir="./lora_output"):
    """Trainer로 파인튜닝 실행"""
    from transformers import TrainingArguments, Trainer
    
    training_args = TrainingArguments(
        output_dir=output_dir,
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        learning_rate=2e-4,
        fp16=True,
        logging_steps=10,
        save_strategy="epoch",
        eval_strategy="epoch",
        num_train_epochs=3,
        warmup_ratio=0.1,
        optim="paged_adamw_8bit"
    )
    
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=train_dataset
    )
    
    trainer.train()
    trainer.save_model(output_dir)
    return trainer

학습 로드맵: 개인별 맞춤 추천 #

학습자의 배경에 따른 최적의 학습 경로:

배경 추천 시작 페이즈 예상 완료 기간 핵심 페이즈
완전 초보자 (프로그래밍 경험 없음) Phase 0 6-9개월 0-12 전체
일반 개발자 (Python 경험 있음) Phase 1 4-6개월 1-8, 11-12
데이터 분석가 (Pandas 경험 있음) Phase 5 3-5개월 5-10, 11-12
ML 엔지니어 (scikit-learn 경험 있음) Phase 9 2-4개월 9-12
연구자 (논문 기반 지식 있음) Phase 11 1-3개월 11-12
DevOps 엔지니어 Phase 12 1-2개월 12 전체

프로젝트 아이디어 모음 #

커리큘럼을 따라하며 빌드할 수 있는 실습 프로젝트:

프로젝트 관련 페이즈 난이도 사용 기술
스팸 메일 분류기 Phase 5-6 ★☆☆ scikit-learn, TF-IDF
주식 가격 예측 Phase 7-8 ★★☆ LSTM, Prophet
이미지 분류 앱 Phase 9 ★★☆ CNN, PyTorch
챗봇 서비스 Phase 10 ★★★ Transformer, FastAPI
추천 시스템 Phase 11 ★★★ Collaborative Filtering
자율주행 시뮬레이션 Phase 12 ★★★☆ Reinforcement Learning
RAG 파이프라인 Phase 12 ★★★★ LangChain, Vector DB

제한사항 #

ai-engineering-from-scratch도 완벽하지 않습니다:

  • 시간 소요: 12개 페이즈를 완료하려면 최소 3-6개월 필요
  • 영어 콘텐츠: 모든 레슨이 영어로 제공됨
  • GPU 필요: Deep Learning 페이즈는 GPU 환경 권장
  • 자기 주도 학습: 강의 vídeo가 없으므로 자기 주도 학습 능력 필요
  • 최신성: 레포지토리가 활발히 업데이트되지만, 일부 레슨이 오래되었을 수 있음
  • 환경 문제: 로컬 GPU가 없는 경우 Google Colab 의존도가 높아짐
  • 프로젝트 범위: 각 레슨의 프로젝트가 교육용으로 단순화되어 있어 프로덕션 수준의 복잡도를 완전히 반영하지는 않음

자주 묻는 질문 #

Q: ai-engineering-from-scratch는 정말 무료인가요? A: 네, 완전히 무료입니다. MIT 라이선스로 오픈소스이며, 상업적 사용도 가능합니다.

Q: 어떤 사전 지식이 필요한가요? A: Phase 0부터 시작한다면 프로그래밍 기초 지식만 있으면 됩니다. Python을 조금 알아도 좋습니다.

Q: GPU가 없으면 Deep Learning을 배울 수 없나요? A: Google Colab이나 Kaggle Notebook을 사용하면 무료 GPU를 사용할 수 있습니다.

Q: 한국어로 된 자료가 있나요? A: 현재는 영어만 제공됩니다. 하지만 AI 에이전트 스킬을 통해 한국어 번역을 유도할 수 있습니다.

Q: 수료증이 있나요? A: 아니요, 수료증은 제공되지 않습니다. 대신 각 레슨을 완료하면 실제로 빌드한 프로젝트 포트폴리오가 생깁니다.

Q: Agent Memory는 무엇인가요? A: 로힛의 이전 프로젝트로, AI 에이전트의 지속적 메모리를 제공합니다. ai-engineering-from-scratch와 자연스럽게 연동됩니다.

Q: 어느 정도 시간이 필요한가요? A: 주 10-15시간 학습 기준으로 Phase 0-6까지 약 2-3개월, 전체 12페이즈 완료까지 4-6개월이 소요됩니다.

Q: 커리큘럼을 순서대로 따라야 하나요? A: 필수는 아닙니다. 배경 지식에 따라 원하는 페이즈부터 시작해도 됩니다. 다만 Phase 0은 권장합니다.

결론 #

ai-engineering-from-scratch는 AI 엔지니어링 학습의 표준이 될 도구입니다. 12개 페이즈, 100개 이상의 레슨, 각 레슨마다 실습 프로젝트 — 이 모든 것이 무료입니다.

특히 **“Learn it. Build it. Ship it for others.”**라는 철학이 좋습니다. 단순히 지식을吸收하는 것이 아니라, 실제로 무언가를 만들고, 다른 사람과 공유합니다. 이것이 진정한 학습입니다.

32,000개의 별은 이 커리큘럼이 많은 학습자에게 필요하다는 증거입니다. AI 엔지니어링을 배우고 싶다면, 여기서 시작하세요. 오늘 시작하면 6개월 후에는 완전히 다른 개발자가 되어 있을 것입니다.

CI/CD 파이프라인, Kubernetes 배포, LoRA 파인튜닝, 모델 벤치마킹 등 프로덕션 수준의 기술을 단계별로 배울 수 있다는 점이 이 커리큘럼의 진정한 가치입니다.

텔레그램 참여하기

데이터 과학 자동화 | AI 개발 도구 비교


Sources & Further Reading:

면책(Disclosure): 본 문서에는 아마리트이션 관계가 있을 수 있는 도구가 언급되어 있습니다. 긍정적인 리뷰를 위해 대가를 받지 않습니다. 모든 벤치마크는 자체 수행하거나 공식 문서에서 sourced되었습니다.

💬 Discussion