Всім привіт.
От чого не вистачає в багатьох безкоштовних інструментах GenAI ?
Розумної докачки великих файлів, особливо моделей.
Розробники вважають що інтернет завжди стабільний, а файл моделі іноді не докачується, потім на диску лежить недокачаний файл, а сам GenAI-інструмент не знає як з цим бути.
Це класична помилка "Happy Path" (шляху щасливчика) у розробці - коли програміст пише код, розраховуючи, що мережа ідеальна, диск не переповниться, а світло не вимкнуть. Звісно коли ми користуємся безкоштовним ПЗ то всі претензії зайві, хоча побажання завжди можно залишити на github.
Для великих файлів (LLM моделі, ваги нейромереж .gguf, .bin, які важать гігабайти) простої докачки замало. Є ще одна величезна проблема - "биті" файли.
Файл може скачатися повністю (розмір зійдеться байт-у-байт), але всередині буде "сміття" через помилку мережі. Інструмент спробує завантажити таку модель і впаде з незрозумілою помилкою.
Ось "золотий стандарт" для завантажувача моделей, який вирішує проблему "недокачаного або битого файлу". Тому додаємо перевірку SHA256 хешу.
Цей код робить три речі (для Python 3.10+):
- Перевіряє, чи файл вже є. Якщо він є і розмір збігається — перевіряє його цілісність (хеш).
- Докачує, якщо файл неповний.
- Видаляє файл, якщо після скачування хеш не зійшовся (щоб ви не зберігали сміття).
Python
import urllib.request
import urllib.error
import sys
import os
import hashlib
