Ömer Yentür | https://www.linkedin.com/in/yentur/
Alper Balbay | https://www.linkedin.com/in/alperiox/
Mustafa Yavuz | https://www.linkedin.com/in/mstkyvz/
- AI Modeli: AIDC-AI/Ovis1.6-Gemma2-9B
- Frontend: Streamlit
- Backend API: FastAPI
- Görüntü İşleme: Pillow
- Dil Algılama: papluca/xlm-roberta-base-language-detection
- Python 3.8+
- CUDA uyumlu GPU (en az 12GB VRAM önerilir)
- 16GB+ RAM
- 50GB+ boş disk alanı
Ana bağımlılıklar:
- torch==2.0.0
- transformers==4.30.2
- fastapi==0.95.2
- streamlit==1.22.0
- pillow==9.5.0
- optimum==1.16.0
- uvicorn==0.22.0
Tam bağımlılık listesi için requirements.txt
dosyasına bakın.
-
Projeyi klonlayın:
git clone https://github.com/your-username/your-repo-name.git cd your-repo-name
-
Sanal bir ortam oluşturun ve etkinleştirin:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
-
Gerekli paketleri yükleyin:
pip install -r requirements.txt
-
CUDA ve cuDNN'in doğru sürümlerinin yüklü olduğundan emin olun.
-
config.json
dosyasını projenizin kök dizinine yerleştirin ve gerekirse yapılandırmayı düzenleyin.
config.json
dosyası aşağıdaki ana bölümleri içerir:
api
: API sunucu ayarlarımodel
: AI model parametreleriquantization
: Model kuantizasyon ayarlarıgeneration
: Metin üretim parametreleripaths
: Dosya yollarısupported_languages
: Desteklenen dillerlanguage_map
: Dil eşleştirmeleri
Örnek:
{
"api": {
"host": "0.0.0.0",
"port": 8000
},
"model": {
"checkpoint": "AIDC-AI/Ovis1.6-Gemma2-9B",
"dtype": "bfloat16",
"max_length": 2048
},
"quantization": {
"method": "qfloat8"
},
...
}
Görüntü ve metin işleme için kullanılır.
Parametreler:
image
: UploadFile - İşlenecek görüntü dosyasıtext
: str - Görüntüyle ilgili açıklamalang
: str - İstenilen çıktı dili
Yanıt:
{
"output": "Generated text based on the image and input"
}
Proje, model performansını artırmak için çeşitli optimizasyon teknikleri kullanır:
- Kuantizasyon:
qfloat8
yöntemi kullanılarak model ağırlıkları kuantize edilir. - CUDA Optimizasyonu: Model, CUDA-uyumlu GPU'larda çalışacak şekilde optimize edilmiştir.
- Bellek Yönetimi: Gereksiz tensörler temizlenir ve CUDA önbelleği boşaltılır.
Yaygın hatalar ve çözümleri:
- CUDA hatası: CUDA sürümünüzün PyTorch sürümüyle uyumlu olduğundan emin olun.
- Bellek yetersizliği: Daha büyük VRAM'e sahip bir GPU kullanın veya batch size'ı azaltın.
- Model yükleme hatası: İnternet bağlantınızı kontrol edin ve model dosyalarının doğru konumda olduğundan emin olun.
- Büyük dosyalar için önbellek kullanın.
- API isteklerini asenkron olarak işleyin.
- Görüntü ön işleme adımlarını optimize edin.
- API'yi public internete açmadan önce uygun kimlik doğrulama ve yetkilendirme mekanizmalarını ekleyin.
- Kullanıcı girdilerini her zaman doğrulayın ve sterilize edin.
- Hassas bilgileri (API anahtarları, veritabanı kimlik bilgileri vb.) çevresel değişkenlerde veya güvenli bir yapılandırma yönetimi sisteminde saklayın.
Bu proje MIT lisansı altında lisanslanmıştır.