Ship va yangilash sikli
"Ship qilingan" nima degani
Bu kitobda "tez8 ship qilingan" degan ibora ko'p uchradi. Halol bo'lish uchun aniqlashtiramiz: bugun bu mahsulot modeli degani — ya'ni testlarda eng yaxshi chiqqan, va keyingi har bir model u bilan solishtiriladigan model. Tahlilchining kompyuteriga o'rnatilgan dastur hali yo'q (2-bob). "Ship" — hozircha qaror, o'rnatish emas.
Lekin model fayli o'zi tayyor, va uni qanday yetkazish, almashtirish va orqaga qaytarish — hozirdanoq loyihalangan. Bu bob — shu haqida.
Model — bitta fayl
Tez ning butun "aqli" — bitta GGUF fayl. Hamma o'qitilgan modellar bir papkada:
import json import hashlib sozlama = json.load(open(TEZ / "speed/config.json", encoding="utf-8")) papka = Path(sozlama["model_dir"]) for model in sozlama["models"]: if model["name"].startswith("tez-"): fayl = papka / model["file"] holat = f"{fayl.stat().st_size / 2**20:,.0f} MB" if fayl.exists() else "hali yo'q" print(f"{model['name']:10s} {model['file']:26s} {holat}")
tez-pilot4b Tez-pilot4b-Q4_K_M.gguf 2,583 MB tez-tez3 Tez-tez3-Q4_K_M.gguf 2,583 MB tez-tez4 Tez-tez4-Q4_K_M.gguf 2,583 MB tez-tez5 Tez-tez5-Q4_K_M.gguf 2,583 MB tez-tez6 Tez-tez6-Q4_K_M.gguf 2,583 MB tez-tez7 Tez-tez7-Q4_K_M.gguf 2,583 MB tez-tez8 Tez-tez8-Q4_K_M.gguf 2,583 MB tez-tez9 Tez-tez9-Q4_K_M.gguf 2,583 MB tez-tez10 Tez-tez10-Q4_K_M.gguf 2,583 MB tez-control8 Tez-control8-Q4_K_M.gguf hali yo'q tez-tez11a Tez-tez11a-Q4_K_M.gguf 2,583 MB tez-tez11b Tez-tez11b-Q4_K_M.gguf 2,583 MB
Har biri ikki yarim gigabaytdan sal ko'p. Dastur o'zgarmaydi — faqat bu fayl almashadi. Bu yangilashni oddiy qiladi: bank IT bo'limi bitta faylni tekshiradi va almashtiradi.
Fayl haqiqiymi
Bank uchun birinchi savol: "bu fayl siz bergan faylmi, yo'lda o'zgartirilmaganmi?" Javob — xesh: faylning barmoq izi. Fayldagi bitta bayt o'zgarsa, xesh butunlay boshqacha bo'ladi. tez8 ning xeshini hisoblaymiz:
import time fayl = papka / "Tez-tez8-Q4_K_M.gguf" boshla = time.perf_counter() xesh = hashlib.sha256() with open(fayl, "rb") as f: for bolak in iter(lambda: f.read(1 << 24), b""): xesh.update(bolak) print(f"SHA-256: {xesh.hexdigest()}") print(f"hisoblash vaqti: {time.perf_counter() - boshla:.0f} soniya ({fayl.stat().st_size / 2**30:.2f} GiB)")
SHA-256: 55015e1352f762d3935b154825cfdba87f11aabe12784adb0cc76a3e620a8bb9 hisoblash vaqti: 13 soniya (2.52 GiB)
Yetkazishda bu xesh fayl bilan alohida beriladi (masalan, imzolangan hujjatda), va Tez har ishga tushganda faylning xeshini tekshiradi. Mos kelmasa — model yuklanmaydi. Bu tekshiruv xavfsizlik planida yozilgan, lekin kodda hali yo'q (27-bob).
Orqaga qaytarish
Yangi model eskisidan yaxshiroq chiqqan bo'lsa ham, haqiqiy ishda u kutilmagan joyda xato qilishi mumkin — 21-bobda tez9 bir ko'nikmada yutib, boshqasida yutqazdi. Shuning uchun plan: yangi fayl qo'yilganda eskisi o'chirilmaydi. Tahlilchi yoki IT bo'limi bitta tanlov bilan oldingi modelga qaytadi. Model nomi va fayli sozlamada turadi — dastur kodida emas — demak qaytarish faqat sozlamani o'zgartirish.
Yangilash sikli
Tez bir martalik mahsulot emas. Plan — "ship qil va yangilab bor" (ship and keep updating). Sikl to'rt qadamdan:
- Tahlilchi noto'g'ri javobni belgilaydi. Tez faqat so'rov matnini va model planini saqlaydi — jadval qatorlarini emas. 27-bobdagi muhim qo'shimcha bilan: so'rovning o'zida ism yoki hisob raqami bo'lishi mumkin, va u bank ichida tozalanishi kerak.
- Saqlangan so'rovlar training juftliklariga aylanadi. To'g'ri plan qo'lda yoki kod bilan yoziladi, va 13-17 boblardagi butun fabrika ishlaydi: tekshiruv, eksport, qamrov darvozasi.
- Keyingi model o'qitiladi (18-21 boblar).
- U faqat joriy modeldan hamma test to'plamlarida yutsa ship qilinadi — real jadvallardagi to'plamlar bilan birga, va 24-bobdagi bootstrap qoidasi bilan.
Bu siklning eng qimmatli qismi — birinchi qadam. Hozircha bizning hamma test va training ma'lumotlarimiz — o'zimiz tasavvur qilgan savollar. Tahlilchining haqiqiy belgilagan xatolari — real hayotdan kelgan birinchi ma'lumot bo'ladi.
Bitta sikl qancha vaqt oladi
Ikkinchi va uchinchi qadamlarning narxini o'lchangan vaqtlardan bilamiz. tez8 ning o'z fayllaridagi vaqt belgilari:
from datetime import datetime papka8 = Path.home() / "tez_runs/tez8" boshlanish = datetime.strptime(json.load(open(papka8 / "output/soup_run.json"))["run_id"][4:19], "%Y%m%d_%H%M%S") oxirgi_qadam = max(datetime.fromtimestamp(p.stat().st_mtime) for p in (papka8 / "output").glob("checkpoint-*")) kvantlangan = datetime.fromtimestamp((papka / "Tez-tez8-Q4_K_M.gguf").stat().st_mtime) natijalar = sorted(datetime.fromtimestamp(p.stat().st_mtime) for p in (TEZ / "results").glob("tez8g_cpu_*.jsonl")) print(f"o'qitish: {boshlanish:%H:%M} -> {oxirgi_qadam:%H:%M} ({(oxirgi_qadam - boshlanish).seconds / 3600:.1f} soat)") print(f"birlashtirish va kvantlash: {oxirgi_qadam:%H:%M} -> {kvantlangan:%H:%M} ({(kvantlangan - oxirgi_qadam).seconds / 60:.0f} daqiqa)") print(f"benchmark (20 to'plam fayllari): {natijalar[0]:%H:%M} -> {natijalar[-1]:%H:%M} ({(natijalar[-1] - natijalar[0]).seconds / 3600:.1f} soat, birinchi to'plamsiz)")
o'qitish: 12:30 -> 18:06 (5.6 soat) birlashtirish va kvantlash: 18:06 -> 18:15 (9 daqiqa) benchmark (20 to'plam fayllari): 00:11 -> 02:35 (2.4 soat, birinchi to'plamsiz)
Bundan tashqari — yangi ma'lumot yasash (o'qituvchi bilan; 16-bobda bitta qisqa so'rovlar partiyasi taxminan bir yarim soat olgan). Ya'ni bitta to'liq sikl — taxminan o'n soat kompyuter vaqti. Bu tunda ishlaydigan ish: kechqurun boshlanadi, ertalab natija.
Ship qilmaslik ham qaror
Siklning eng muhim xususiyati — u har doim yangi model chiqarishi shart emas. tez7 tez6 dan farqlanmadi — ship qilinmadi. tez9 yutqazdi — ship qilinmadi. Har ikki holatda ham sikl foyda berdi: tez7 dan keyin test kattalashtirildi, tez9 dan keyin "bitta o'zgarish" qoidasi paydo bo'ldi.
Bank uchun bu xavfsizroq ham: yangilanish faqat o'lchangan yaxshilanish bo'lganda keladi. "Yangi versiya chiqdi" — avtomatik ravishda "yaxshiroq" degani emas, va Tez buni bilib turib yangilamaydi.
Hali yo'q narsalar
Bu bobdagi siklning ko'p qismi hozircha plan:
| Qism | Holat |
|---|---|
| Model — bitta fayl, sozlamada nomlangan | Bor |
| Training, kvantlash, benchmark zanjiri | Bor (tez10 shu zanjir bilan ishlamoqda) |
| Xeshni yuklashda tekshirish | Yo'q |
| Oldingi modelga bir tanlov bilan qaytish | Yo'q (ilova yo'q) |
| Tahlilchi xatoni belgilaydigan tugma | Yo'q (ilova yo'q) |
| So'rovlarni bank ichida tozalash | Loyihalanmagan |
| O'rnatuvchi va yangilash paketi | Yo'q |
Xulosa
- "Ship" bugun — mahsulot modeli haqidagi qaror; o'rnatilgan dastur hali yo'q.
- Model — bitta GGUF fayl, taxminan 2.6 GB; yangilash — fayl almashtirish, eskisi saqlanadi.
- Fayl xesh bilan tekshiriladi — bu planda, kodda emas.
- Yangilash sikli: tahlilchi xatoni belgilaydi, so'rov (tozalangan holda) trainingga kiradi, yangi model faqat hamma testlarda yutsa ship qilinadi.
- Bitta sikl — taxminan o'n soat kompyuter vaqti; ship qilmaslik ham — sikl natijasi.
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.