Views
No views yet

FlyDeviation Lab projesi için eğitilmiş bir LoRA adapter'dır. Qwen2.5-14B-Instruct üzerine QLoRA (NF4 + BF16) ile, EuroControl,ADS-B,FR24 verileri üzerinden elde edilmiş 17 milyon uçuş verisi kullanılarak inşa edilmiş 50.000 örneklik dengeli bir korpus ile fine-tune edildi.weather · traffic · airline_ops · nominal · notam)Qwen/Qwen2.5-14B-Instruct base model'i ile birlikte yüklenmelidir.1import torch
2from peft import PeftModel
3from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
4
5ADAPTER = "AliUlu/qwen2.5-14b-flydeviation-lora"
6BASE = "Qwen/Qwen2.5-14B-Instruct"
7
8# --- (A) ≥30 GB VRAM: BF16 tam yükleme ---
9# base = AutoModelForCausalLM.from_pretrained(
10# BASE, device_map="auto", torch_dtype=torch.bfloat16,
11# )
12
13# --- (B) ~10-14 GB VRAM: 4-bit ---
14bnb = BitsAndBytesConfig(
15 load_in_4bit=True,
16 bnb_4bit_quant_type="nf4",
17 bnb_4bit_compute_dtype=torch.bfloat16,
18 bnb_4bit_use_double_quant=True,
19)
20base = AutoModelForCausalLM.from_pretrained(
21 BASE, quantization_config=bnb, device_map="auto", torch_dtype=torch.bfloat16,
22)
23
24tok = AutoTokenizer.from_pretrained(ADAPTER, use_fast=True)
25model = PeftModel.from_pretrained(base, ADAPTER).eval()
26
27# Model, eğitim sırasında bu Türkçe formatla beslendi — drift'i önlemek için
28# çıkarımda da aynı formatı kullanılmalı. Live (anlık) bölümü opsiyoneldir;
29system = (
30 "Sen bir uçuş operasyonu analistisin. Verilen rota, uçak tipi, tarih ve "
31 "operasyonel bağlam bilgilerine göre bu uçuşun tarihsel medyana göre "
32 "blok-süre sapmasını (deviation_min) tahmin edersin. Eğer prompt'ta "
33 "'Anlık koşullar' bölümü varsa, METAR'daki rüzgar/yağış, anlık hava "
34 "trafiği ve aktif NOTAM'larda yer alan kapalı pist/taxiway/yardım "
35 "kısıtlamalarını analizine ve drivers listesine mutlaka yansıt. Cevabın "
36 "iki kısımdan oluşur: (1) Türkçe kısa bir analiz paragrafı, (2) JSON "
37 "bloğu. JSON tam olarak şu anahtarları içermelidir: predicted_min, "
38 "baseline_min, deviation_min, confidence, drivers (string listesi). "
39 "Tahminler dakika cinsindendir."
40)
41
42user = """Uçuş bilgileri:
43- Rota: Madrid (LEMD) → İstanbul (LTFM)
44- Tarih: 2026-05-13 (Çarşamba)
45- Mevsim: spring
46- Kalkış saati: 11:00 (morning)
47- Uçak tipi: A321 (sınıf narrow_body)
48- Great-circle mesafe: 2701 km, başlangıç yönü 73° (doğu)
49- A321 tipik cruise hızı: 833 km/h; bu mesafe için teorik minimum blok süre ≈ 219 dk
50
51Rota tarihçesi (aynı uçak tipi için):
52- Örneklem: 112 uçuş
53- Medyan blok süre: 210 dk (p10 190 – p90 208, std 6.4)
54
55Operasyonel bağlam:
56- Kalkış havalimanında aynı saat dilimindeki kalkış sayısı: 18
57- Varış havalimanında aynı saat dilimindeki iniş sayısı: 47
58- O gün kalkış havalimanı toplam kalkış: 412, varış havalimanı toplam iniş: 1180
59
60Hava (uçuş zamanı):
61- LEMD (kalkış): rüzgar 240°/14kt, sıcaklık 12°C, QNH 1013
62- LTFM (iniş): rüzgar 040°/10kt, sıcaklık 19°C, QNH 1016
63
64Anlık koşullar (gerçek zamanlı):
65- LEMD METAR: 24014KT 7000 -RA FEW045CB BKN050 12/08 Q1013 RERA NOSIG
66- LTFM METAR: 04010KT 9999 SCT030 BKN090 19/12 Q1016 NOSIG RMK RWY17L 03008KT
67- LEMD 50km içinde anlık 18 uçak havada
68- LTFM 50km içinde anlık 2 uçak havada
69- Aktif NOTAM'lar (rota üstü):
70 - LEMD A3282/26: RAPID EXIT TWY Z10 INDICATOR LIGHTS (RETIL) U/S
71 - LEMD E2352/26: DME BRA CH111Y ON RDL349 DISTANCE MEASUREMENT NOT RELIABLE BTN 6.8NM AND 4NM
72 - LEMD A3151/26: REF AIRAC SUP 133/25 PHASE 4 ACT
73
74Görev: Bu uçuşun tarihsel medyana göre blok-süre sapmasını (dakika) tahmin et."""
75
76msgs = [{"role": "system", "content": system}, {"role": "user", "content": user}]
77prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
78inp = tok(prompt, return_tensors="pt").to(model.device)
79
80with torch.inference_mode():
81 out = model.generate(**inp, max_new_tokens=512, do_sample=False,
82 pad_token_id=tok.eos_token_id)
83print(tok.decode(out[0, inp.input_ids.shape[1]:], skip_special_tokens=True))⚠️ Train/serve format uyumu önemli. Eğitim prompt'ları yukarıdaki Türkçe yapıyı kullanıyor. Farklı bir şablonla (örn. İngilizce key-value) sorarsan model performansı düşer.
| Step | eval_loss |
|---|---|
| 2250 (epoch 0.72) | 0.0757 |
| 2500 (epoch 0.80) | 0.0741 |
| 2750 (epoch 0.88) | 0.0731 |
| 3000 (epoch 0.96) | 0.0726 |
Qwen/Qwen2.5-14B-Instruct Apache-2.0 ile dağıtılmaktadır; bu adapter'ı kullanırken her iki lisansa da uyulmalıdır.FlyDeviation Lab project. Fine-tuned on top of Qwen2.5-14B-Instruct using QLoRA (NF4 + BF16) on a 50,000-example balanced corpus distilled from 17 million flights collected via EuroControl, ADS-B, and FR24.weather · traffic · airline_ops · nominal · notam)Qwen/Qwen2.5-14B-Instruct base model.| Step | eval_loss |
|---|---|
| 2250 (epoch 0.72) | 0.0757 |
| 2500 (epoch 0.80) | 0.0741 |
| 2750 (epoch 0.88) | 0.0731 |
| 3000 (epoch 0.96) | 0.0726 |
Qwen/Qwen2.5-14B-Instruct is distributed under Apache-2.0; both licenses must be respected when using this adapter.