<<<<<<< HEAD
AIFFEL_quest_eng
βββ Computer_Vision
β βββ CV01
β β βββ README.md
β β βββ .ipynb
β βββ CV02
β β βββ README.md
β β βββ .ipynb
β βββ CV03
β βββ README.md
β βββ .ipynb
βββ Data_Analysis
β βββ DA01
β β βββ README.md
β β βββ .ipynb
β βββ DA02
β βββ README.md
β βββ .ipynb
βββ Deployment
β βββ Contents
β β βββ README.md
β β βββ .ipynb
β βββ Final_Code
β βββ README.md
β βββ .ipynb
βββ LLM_Application
β βββ LLM01
β β βββ README.md
β β βββ .ipynb
β βββ LLM02
β β βββ README.md
β β βββ .ipynb
β βββ LLM03
β β βββ README.md
β β βββ .ipynb
β βββ LLM04
β β βββ README.md
β β βββ .ipynb
β βββ LLM05
β βββ README.md
β βββ .ipynb
βββ MLOps
β βββ MLOps01
β β βββ README.md
β β βββ .ipynb
β βββ MLOps02
β β βββ README.md
β β βββ .ipynb
β βββ MLOps03
β β βββ README.md
β β βββ .ipynb
β βββ MLOps04
β β βββ README.md
β β βββ .ipynb
β βββ MLOps05
β β βββ README.md
β β βββ .ipynb
β βββ MLOps06
β β βββ README.md
β β βββ .ipynb
β βββ MLOps07
β βββ README.md
β βββ .ipynb
βββ Main_Quest
β βββ Quest01
β β βββ README.md
β β βββ .ipynb
β βββ Quest02
β β βββ README.md
β β βββ .ipynb
β βββ Quest03
β β βββ README.md
β β βββ .ipynb
β βββ Quest04
β β βββ README.md
β β βββ .ipynb
β βββ Quest05
β βββ README.md
βββ NLP
β βββ NLP01
β β βββ README.md
β β βββ .ipynb
β βββ NLP02
β β βββ README.md
β β βββ .ipynb
β βββ NLP03
β β βββ README.md
β β βββ .ipynb
β βββ NLP04
β β βββ README.md
β β βββ .ipynb
β βββ NLP05
β βββ README.md
β βββ .ipynb
βββ Python
β βββ Py01
β β βββ README.md
β β βββ .ipynb
β βββ Py02
β β βββ README.md
β β βββ .ipynb
β βββ Py03
β β βββ README.md
β β βββ .ipynb
β βββ Py04
β βββ README.md
β βββ .ipynb
βββ README.md=======
RTX 4090μ νμ©ν νκ΅μ΄ μ±λ΄ κ°λ° νλ‘μ νΈμ λλ€. νΈλμ€ν¬λ¨Έ κΈ°λ° μνμ€-ν¬-μνμ€ λͺ¨λΈμ μ¬μ©ν©λλ€.
μ΄ νλ‘μ νΈλ λ€μ λ¨κ³λ₯Ό λ°λ¦ λλ€:
-
Step 1-2: λ°μ΄ν° μ μ²λ¦¬ (
01_preprocess.py)- CSV λ°μ΄ν° λ‘λ
- μ κ·μμ μ¬μ©ν λ°μ΄ν° μ μ
- κ²°μΈ‘κ° λ° μ€λ³΅ μ κ±°
-
Step 3: Mecab μ½νΌμ€ κ΅¬μΆ (
02_build_corpus.py)- KoNLPy Mecabμ μ¬μ©ν ννμ λΆμ
- μ΄ν μ¬μ ꡬμΆ
- ν ν°νλ λ°μ΄ν° μ μ₯
-
Step 4: λ°μ΄ν° μ¦κ° (
03_augmentation.py)- Word2Vec (ko.bin) κΈ°λ° μ μ¬ λ¨μ΄ μμ±
- λ°μ΄ν°λ₯Ό 3λ°°λ‘ μ¦κ°
-
Step 5-6: λͺ¨λΈ νμ΅ (
04_train.py)- Transformer κΈ°λ° Seq2Seq λͺ¨λΈ
- , ν ν° μΆκ°
- RTX 4090 μ΅μ ν λ°°μΉ μ¬μ΄μ¦ μ€μ
- λͺ¨λΈ νμ΅ λ° κ²μ¦
- GPU: RTX 4090 (24GB VRAM)
- Python: 3.10+
- CUDA: 12.1+
- Mecab μ€μΉ νμ
cd /workspace/chatbot_project
python -m venv venv
source venv/bin/activate # Linux/Mac
# λλ venv\Scripts\activate (Windows)pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y mecab mecab-ko mecab-ko-dic
# λλ Condaλ₯Ό μ¬μ©ν κ²½μ°
conda install -c conda-forge mecab mecab-ko-dicko.bin λͺ¨λΈμ λ€μ΄λ‘λνμ¬ models/ ν΄λμ μ μ₯ν΄μΌ ν©λλ€.
μ΅μ 1: Kyubyongμ wordvectors λ€μ΄λ‘λ
cd models
wget https://github.com/Kyubyong/wordvectors/releases/download/korean/ko.bin
cd ..μ΅μ 2: FastText CBOW λͺ¨λΈ μ¬μ©
cd models
wget https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.ko.300.bin.gz
gunzip cc.ko.300.bin.gz
mv cc.ko.300.bin ko.bin
cd ..μ±λ΄ λ°μ΄ν° CSV νμΌμ μ€λΉνμΈμ:
- νμΌλͺ
:
ChatbotData.csv - μμΉ:
data/raw/ChatbotData.csv - νμ: μ΅μ 2κ° μ»¬λΌ (question, answer)
question,answer
μλ
νμΈμ,μλ
νμΈμ! μ΄λ»κ² λμλ릴κΉμ?
λ μ¨κ° μ΄λ»κ² λλμ?,λ μ¨ μ 보λ νμ¬ μ 곡νκ³ μμ§ μμ΅λλ€.Augmentation tip:
03_augmentation.pyκ°UnicodeDecodeErrorλ₯Ό λ΄λ©΄ko.binνμμ΄ μλͺ»λμμ μ μμ΅λλ€. μ€ν¬λ¦½νΈκ° λ°μ΄λ리/ν μ€νΈ/FastText νμμ μλμΌλ‘ μλνλ―λ‘ μ½λκ° μ΄μ λ³΄λ€ μμ μ μ λλ€.- λͺ¨λΈ λ‘λ©μ΄ λ무 μ€λ 걸리거λ λ°μμ΄ μμΌλ©΄,
ko.binνμΌμ΄ λ§€μ° μ»€μ λ°μν μ μμ΅λλ€. μ΄ κ²½μ° μ€ν¬λ¦½νΈλ μλμΌλ‘ μ¦κ°μ 건λλ°κ³ μλ³Έ λ°μ΄ν°λ₯Ό μ¬μ©ν©λλ€.- μμ ν μ¦κ° λ¨κ³λ₯Ό λλ €λ©΄
config.pyμμUSE_AUGMENTATION = Falseλ‘ μ€μ νμΈμ.
# Step 1-2: λ°μ΄ν° μ μ²λ¦¬
python scripts/01_preprocess.py
# Step 3: Mecab μ½νΌμ€ ꡬμΆ
python scripts/02_build_corpus.py
# Step 4: λ°μ΄ν° μ¦κ°
python scripts/03_augmentation.py
# Step 5-6: λͺ¨λΈ νμ΅
python scripts/04_train.pybash run_pipeline.shμ΄ νλ‘μ νΈλ RTX 4090μ μ±λ₯μ μ΅λν νμ©νλλ‘ μ΅μ νλμ΄ μμ΅λλ€:
- Batch Size: 128 (RTX 4090μ 24GB VRAM μ΅μ ν)
- Model Size:
- d_model: 768 (was 512, increased for RTX 4090)
- num_heads: 12
- num_layers: 6
- dim_feedforward: 3072
- Mixed Precision: κ°λ₯ (μΆκ° μ΅μ ν)
- Memory Usage: ~15-18GB per batch
λ°°μΉ μ¬μ΄μ¦λ₯Ό μ‘°μ νλ €λ©΄ config.pyμ BATCH_SIZEλ₯Ό μμ νμΈμ.
config.pyμμ λ€μμ 컀μ€ν°λ§μ΄μ¦ν μ μμ΅λλ€:
# λ°μ΄ν° κ²½λ‘
VOCAB_SIZE = 10000
EMBEDDING_DIM = 300
MAX_SEQ_LENGTH = 50
# νΈλ μ΄λ νλΌλ―Έν°
BATCH_SIZE = 128
EPOCHS = 20
LEARNING_RATE = 0.001
DROPOUT_RATE = 0.3
# νΈλμ€ν¬λ¨Έ νλΌλ―Έν°
TRANSFORMER_D_MODEL = 768 # increased for RTX 4090
TRANSFORMER_NHEAD = 12
TRANSFORMER_NUM_LAYERS = 6
TRANSFORMER_DIM_FEEDFORWARD = 3072chatbot_project/
βββ data/
β βββ raw/ # μλ³Έ λ°μ΄ν°
β β βββ ChatbotData.csv
β βββ processed/ # μ²λ¦¬λ λ°μ΄ν°
β βββ cleaned_data.csv
β βββ augmented_data.csv
β βββ corpus.pkl
βββ models/
β βββ ko.bin # Word2Vec λͺ¨λΈ
β βββ chatbot_model.pt # νμ΅λ λͺ¨λΈ
β βββ tokenizer.pkl # ν ν¬λμ΄μ
β βββ training_results.json # νμ΅ κ²°κ³Ό
βββ scripts/
β βββ 01_preprocess.py # μ μ²λ¦¬
β βββ 02_build_corpus.py # μ½νΌμ€ ꡬμΆ
β βββ 03_augmentation.py # λ°μ΄ν° μ¦κ°
β βββ 04_train.py # λͺ¨λΈ νμ΅
βββ notebooks/
β βββ analysis.ipynb # λΆμ λ° μκ°ν
βββ config.py # μ€μ νμΌ
βββ requirements.txt # μμ‘΄μ±
βββ README.md # μ΄ νμΌ
κ° λ¨κ³λ³λ‘ μμ±λλ νμΌ:
| λ¨κ³ | μΆλ ₯ νμΌ | μ€λͺ |
|---|---|---|
| 1-2 | data/processed/cleaned_data.csv |
μ μ λ λ°μ΄ν° |
| 3 | data/processed/corpus.pkl |
Mecab ν ν°ν κ²°κ³Ό λ° μ΄νμ¬μ |
| 4 | data/processed/augmented_data.csv |
μ¦κ°λ λ°μ΄ν° |
| 5-6 | models/chatbot_model.pt |
νμ΅λ λͺ¨λΈ |
| 5-6 | models/tokenizer.pkl |
ν ν¬λμ΄μ |
| 5-6 | models/training_results.json |
νμ΅ λ©νΈλ¦ |
νμ΅ μ§νμν©μ λͺ¨λν°λ§νλ €λ©΄:
# ν°λ―Έλμμ μ€μκ° λ‘κ·Έ νμΈ
tail -f logs/training.log
# νμ΅ κ³‘μ νμΈ (Jupyter Notebook)
jupyter notebook notebooks/analysis.ipynb# Linux (Ubuntu/Debian)
sudo apt-get install -y libmecab-dev mecab mecab-ko mecab-ko-dic
# macOS
brew install mecab mecab-ko mecab-ko-dic
# Conda (ν¬λ‘μ€ νλ«νΌ)
conda install -c conda-forge mecab mecab-ko-dic- λͺ¨λΈμ΄
models/ko.binμ μλμ§ νμΈ - λͺ¨λΈ νμΌ ν¬κΈ° > 1GB νμΈ
- νμΌμ΄ μμλμμ κ²½μ° λ€μ λ€μ΄λ‘λ
config.pyμμBATCH_SIZEκ°μ (128 β 64 λλ 32)TRANSFORMER_D_MODELκ°μ (512 β 256)MAX_SEQ_LENGTHκ°μ (50 β 32)
# CUDA λ²μ νμΈ
nvcc --version
# PyTorch CUDA νΈνμ± νμΈ
python -c "import torch; print(torch.cuda.is_available())"RTX 4090μμμ μμ μ±λ₯ (λ°°μΉ μ¬μ΄μ¦: 128):
- Data μ²λ¦¬: ~100K samples/sec
- λͺ¨λΈ νμ΅: ~500 samples/sec
- 20 epochs, 100K samples: ~40λΆ
MIT License
νλ‘μ νΈ κ΄λ ¨ μ§λ¬Έμ΄ μμΌμλ©΄ μ΄μλ₯Ό λ±λ‘ν΄μ£ΌμΈμ.
9e320f7 (Upload chatbot project to NLP02/chatbot)