| # 🚀 FitTürkAI VM Kurulum Rehberi - SSH Bağlantısı Sonrası | |
| Tebrikler! VM'nize başarıyla bağlandınız. Şimdi FitTürkAI sistemini kuralım. | |
| ## 🔍 **Adım 1: Sistem Durumunu Kontrol Et** | |
| ```bash | |
| # Sistem bilgilerini kontrol et | |
| sysinfo | |
| # RAM durumunu kontrol et | |
| free -h | |
| # Disk alanını kontrol et | |
| df -h | |
| # Startup script'in çalışıp çalışmadığını kontrol et | |
| cat /var/log/fitturkrai-setup.log | tail -20 | |
| ``` | |
| ## 📦 **Adım 2: Repository'yi Klonla ve Dosyaları Kopyala** | |
| ### Seçenek A: GitHub'dan klonla (eğer repository'niz varsa) | |
| ```bash | |
| cd /home/ubuntu | |
| git clone https://github.com/YOUR_USERNAME/FitTurkAI-RAG.git | |
| cd FitTurkAI-RAG | |
| ``` | |
| ### Seçenek B: Dosyaları manuel olarak oluştur | |
| ```bash | |
| cd /home/ubuntu/FitTurkAI-RAG | |
| # Ana dosyaları oluştur | |
| nano test.py | |
| ``` | |
| **test.py içeriğini kopyalayın** (mevcut CPU optimize edilmiş kodu) | |
| ```bash | |
| # Requirements dosyasını oluştur | |
| nano requirements.txt | |
| ``` | |
| **requirements.txt içeriğini kopyalayın** | |
| ```bash | |
| # Colab setup scriptini oluştur (opsiyonel) | |
| nano colab_setup_and_run.py | |
| ``` | |
| ## 🐍 **Adım 3: Python Environment ve Paketleri Kontrol Et** | |
| ```bash | |
| # Python versiyonunu kontrol et | |
| python3 --version | |
| # Pip'i güncelle | |
| python3 -m pip install --upgrade pip | |
| # PyTorch'un kurulduğunu kontrol et | |
| python3 -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CPU Available: {torch.cuda.is_available() == False}')" | |
| # Gerekli paketleri kur (eksik varsa) | |
| pip3 install -r requirements.txt | |
| ``` | |
| ## 📚 **Adım 4: NLTK Verilerini Kontrol Et** | |
| ```bash | |
| # NLTK verilerinin kurulduğunu kontrol et | |
| python3 -c " | |
| import nltk | |
| try: | |
| from nltk.tokenize import sent_tokenize | |
| test = sent_tokenize('Bu bir test. Bu ikinci cümle.', language='turkish') | |
| print(f'✅ NLTK Turkish tokenization working: {len(test)} sentences') | |
| except: | |
| print('❌ NLTK needs setup') | |
| nltk.download('punkt') | |
| nltk.download('punkt_tab') | |
| nltk.download('stopwords') | |
| " | |
| ``` | |
| ## 📁 **Adım 5: Veri Klasörlerini Hazırla** | |
| ```bash | |
| # Klasör yapısını kontrol et | |
| ls -la | |
| # Gerekli klasörlerin varlığını kontrol et | |
| mkdir -p indirilen_pdfler DATA fitness_rag_store_merged fine_tuned_FitTurkAI_QLoRA | |
| # Demo verinin oluşturulduğunu kontrol et | |
| cat DATA/demo_fitness_data.json | |
| ``` | |
| ## 🧪 **Adım 6: Performance Test Çalıştır** | |
| ```bash | |
| # Sistem performansını test et | |
| python3 /home/ubuntu/performance_test.py | |
| ``` | |
| Bu test şunları kontrol eder: | |
| - ✅ RAM yeterliliği (>2GB) | |
| - ✅ CPU durumu | |
| - ✅ Sentence Transformer yüklenmesi | |
| ## 🎯 **Adım 7: FitTürkAI Sistemini İlk Kez Çalıştır** | |
| ```bash | |
| # Ana dizine git | |
| cd /home/ubuntu/FitTurkAI-RAG | |
| # İlk çalıştırma (modelleri indirecek) | |
| python3 test.py | |
| ``` | |
| **İlk çalıştırmada**: | |
| - Turkish LLaMA model indirilecek (~15-20 dakika) | |
| - Sentence transformer model indirilecek (~2-5 dakika) | |
| - Demo bilgi tabanı oluşturulacak | |
| ## 🔧 **Adım 8: Sorun Giderme (Gerekirse)** | |
| ### Model indirme sorunu varsa: | |
| ```bash | |
| # Hugging Face cache temizle | |
| rm -rf ~/.cache/huggingface/ | |
| # Manuel model indirme | |
| python3 -c " | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| model_name = 'ytu-ce-cosmos/Turkish-Llama-8b-v0.1' | |
| print('Downloading tokenizer...') | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| print('Downloading model...') | |
| model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype='float32') | |
| print('Models downloaded successfully!') | |
| " | |
| ``` | |
| ### RAM sorunu varsa: | |
| ```bash | |
| # Swap'i kontrol et | |
| free -h | |
| # RAM kullanımını izle | |
| watch -n 2 free -h | |
| ``` | |
| ### Konfigürasyonu değiştir (test.py'de): | |
| ```python | |
| # Düşük RAM için | |
| config = RAGConfig( | |
| chunk_size=200, | |
| retrieval_k=3, | |
| max_context_length=2000 | |
| ) | |
| # Yüksek RAM için (64GB+) | |
| config = RAGConfig( | |
| chunk_size=500, | |
| retrieval_k=10, | |
| max_context_length=8000 | |
| ) | |
| ``` | |
| ## 📊 **Adım 9: Sistem İzleme ve Optimizasyon** | |
| ```bash | |
| # RAM kullanımını izle | |
| rammon | |
| # CPU kullanımını izle | |
| htop | |
| # GPU kullanımının olmadığını kontrol et (CPU mode) | |
| python3 -c "import torch; print(f'CUDA Available: {torch.cuda.is_available()}')" | |
| ``` | |
| ## 🎮 **Adım 10: İnteraktif Kullanım** | |
| Sistem çalıştığında: | |
| ```bash | |
| # İnteraktif chat başlat | |
| python3 test.py | |
| ``` | |
| **Örnek sorular**: | |
| ``` | |
| 🤔 Sorunuz: Sağlıklı kahvaltı için ne önerirsiniz? | |
| 🤔 Sorunuz: Günde kaç bardak su içmeliyim? | |
| 🤔 Sorunuz: Egzersiz sonrası ne yemeli? | |
| ``` | |
| ## 📥 **Adım 11: Kendi Verilerinizi Ekleyin** | |
| ### PDF dosyaları için: | |
| ```bash | |
| # PDF'lerinizi yükleyin (scp veya başka yöntemle) | |
| # Örnek: | |
| # scp your_fitness_pdfs/*.pdf username@VM_IP:/home/ubuntu/FitTurkAI-RAG/indirilen_pdfler/ | |
| # Veya wget ile indirin | |
| cd indirilen_pdfler | |
| wget https://example.com/your_fitness_pdf.pdf | |
| ``` | |
| ### JSON verileri için: | |
| ```bash | |
| # JSON verilerinizi DATA klasörüne koyun | |
| cd DATA | |
| nano your_fitness_data.json | |
| # Örnek format: | |
| # [ | |
| # { | |
| # "soru": "Protein kaynakları nelerdir?", | |
| # "cevap": "Protein kaynakları arasında et, balık, yumurta, baklagiller, kuruyemişler bulunur..." | |
| # } | |
| # ] | |
| ``` | |
| ### Bilgi tabanını yeniden oluştur: | |
| ```bash | |
| # Yeni verilerle bilgi tabanını güncelle | |
| python3 -c " | |
| from test import FitnessRAG, RAGConfig | |
| config = RAGConfig() | |
| rag = FitnessRAG(config) | |
| rag.build_knowledge_base(pdf_dir='./indirilen_pdfler', json_dir='./DATA') | |
| print('Knowledge base updated!') | |
| " | |
| ``` | |
| ## 🔥 **Adım 12: Gelişmiş Kullanım** | |
| ### Script olarak çalıştır: | |
| ```bash | |
| # Otomatik sorular | |
| python3 -c " | |
| from test import FitnessRAG, RAGConfig | |
| config = RAGConfig() | |
| rag = FitnessRAG(config) | |
| questions = [ | |
| 'Sağlıklı kahvaltı önerileri', | |
| 'Egzersiz programı nasıl olmalı', | |
| 'Su tüketimi ne kadar olmalı' | |
| ] | |
| for q in questions: | |
| print(f'Soru: {q}') | |
| answer = rag.ask(q) | |
| print(f'Cevap: {answer}\n') | |
| " | |
| ``` | |
| ### API olarak kullan: | |
| ```bash | |
| # Basit Flask API | |
| nano fitness_api.py | |
| ``` | |
| ```python | |
| from flask import Flask, request, jsonify | |
| from test import FitnessRAG, RAGConfig | |
| app = Flask(__name__) | |
| config = RAGConfig() | |
| rag = FitnessRAG(config) | |
| @app.route('/ask', methods=['POST']) | |
| def ask_question(): | |
| data = request.json | |
| question = data.get('question', '') | |
| answer = rag.ask(question) | |
| return jsonify({'answer': answer}) | |
| if __name__ == '__main__': | |
| app.run(host='0.0.0.0', port=8080) | |
| ``` | |
| ```bash | |
| # API'yi çalıştır | |
| pip3 install flask | |
| python3 fitness_api.py | |
| ``` | |
| ## 🎯 **Başarı Kontrol Listesi** | |
| - [ ] ✅ SSH bağlantısı kuruldu | |
| - [ ] ✅ Sistem durumu kontrol edildi | |
| - [ ] ✅ Python paketleri kuruldu | |
| - [ ] ✅ NLTK verileri hazır | |
| - [ ] ✅ Performance test geçti | |
| - [ ] ✅ İlk model indirmesi tamamlandı | |
| - [ ] ✅ Demo sorular çalışıyor | |
| - [ ] ✅ Kendi veriler eklendi (opsiyonel) | |
| - [ ] ✅ Sistem izleme kuruldu | |
| ## 🆘 **Acil Durum Komutları** | |
| ```bash | |
| # Sistem restart (gerekirse) | |
| sudo reboot | |
| # Python process'leri öldür | |
| pkill -f python3 | |
| # Disk alanı temizle | |
| sudo apt autoremove | |
| docker system prune -a # Eğer Docker varsa | |
| # Log'ları kontrol et | |
| tail -f /var/log/syslog | |
| tail -f /var/log/fitturkrai-setup.log | |
| ``` | |
| --- | |
| **🎉 Kurulum tamamlandığında FitTürkAI sisteminiz maksimum RAM ile CPU'da çalışıyor olacak!** |