Мақалалар

Cross-Origin Storage API-ін Transformers.js кітапханасында пайдалану тәжірибесі

Жасанды интеллект саласында трансформерлер технологиясы веб-қосымшаларға кеңінен енгізіліп келеді. Transformers.js кітапханасы арқылы веб-әзірлеушілер трансформерлердің қуатын тікелей браузерде пайдалануы мүмкін. Алайда, осындай шешімдерді іске қосу кезінде ресурстарды тиімді кештеу мәселесі маңызды болып тұр. Бұл мақалада браузердегі модельдік және орындау ресурстарын кештеудің шектеулері мен жаңа ұсынылған Cross-Origin Storage API-інің бұл проблеманы шешудегі мүмкіндіктері қарастырылады.

Кэштеу мәселесі және трансформерлік модельдер ресурстары

Transformers.js кітапханасы белгілі бір тапсырмаларға бағытталған модельдерді іске асыруға арналған pipeline() интерфейсін ұсынады. Мысал ретінде, автоматты сөйлеуді тану (ASR) тапсырмасын қарастырайық. Модель ретінде Xenova/whisper-tiny.en таңдалған, ол ағылшын тілі тапсырмаларына лайықты таңдаулардың бірі.

Бұл модельдің ресурстары мен WebAssembly (Wasm) орындалу файлдары браузерге жүктеледі және кейінірек кеште сақталады. Бұл әдіс қосымшаны қайта іске қосқанда нәтижені жылдам беруін қамтамасыз етеді. Алайда, ресурстарды әр түрлі сайттамалардан (origin) қайта-қайта жүктеу өрескел қайталануға жеткізеді. Мысалы, бір модельді пайдаланатын екі бөлек веб-сайт әрқайсысы өз бетінде 177 МБ көлемінде қайталанатын ресурсты жүктейді, бұл интернет жылдамдығы мен сақтау сыйымдылығын қажетсіз тиімді пайдаланбайтын болады.

Wasm орындалу ресурстары және олардың кештеуі

Тек модельдер ғана емес, сонымен бірге әкімшілік мақсаттағы орнатылым файлдары – мысалы, ONNX Runtime кітапханасының Wasm файлдары әр түрлі модельдердің орындалуына ортақ болады. Екі түрлі модель қолданылғанда да, бұл ортақ Wasm ресурстары әр қайсысының кешінде жеке сақталады. Мұндай жағдай браузердің қатты дискісіндегі қажетсіз орын алуды арттырады және желі арқылы артық жүктемені тудырады.

Кэш изоляциясының себептері және браузердің қазіргі тәсілі

Ресурстар негізінен Hugging Face Hub және jsDelivr CDN-серверлерінен алынады. Бірдей URL-ларға сұраныс жасалғанда да, браузерлер қорғаныс мақсатында әр сайттаманың (origin) кэшін бір-бірінен бөлек қарастырады. Бұл механизм кэшті тайминг-талдауы секілді шабуылдардан қорғайды, яғни сайт ресурста іздеу жасалғанын анықтау мүмкіндігін азайтады.

Мысалы, Chrome браузерінде Network Isolation Key механизмі енгізілген, ол белгілі бір кэш жазбасын сайттаманың жоғарғы деңгейдегі және ағымдағы сайттамасына байланысты ерекшелейді. Осы себепті, дәл бірдей URL бар ресурс браузер жадысында екі бөлек көшірмеге ие болуы мүмкін, бұл қайталанатын жүктеу мен сақтау шығынын тудырады.

Cross-Origin Storage API: кештің тиімді бөлінісі үшін жаңа шешім

Cross-Origin Storage (COS) API – браузерлер арасында үлкен файлдарды бөлісуге арналған жаңартылған интерфейс. Ол файлдарды олардың URL мекенжайының орнына криптографиялық хэш арқылы анықтайды. Бұл тәсіл кез келген екі түрлі сайттаманың бірдей хэшқа ие файлдарды ортақ пайдалануға мүмкіндік береді.

Мысалы, WASM файлдарының біркелкі хэш-коды болса, COS API сұраныс жасағанда бұл файлды бірінші сайттамадан жүктесе, екінші сайттама да сол файлды қайталап жүктемейді, browser-де бір ғана көшірме сақталады. API ішінде талғамды файл алу процесі қарастырылған: сұраныс кезінде файл кэште болса, ол қолжетімді объект ретінде қайтарылады, ал жоқ болса, файл жүктеліп, кейінгі пайдалану үшін сақталады.

API қолдану мысалы

const hash = {
  algorithm: 'SHA-256',
  value: '8f434346648f6b96df89dda901c5176b10a6d83961dd3c1ac88b59b2dc327aa4',
};

try {
  const handle = await navigator.crossOriginStorage.requestFileHandle(hash);
  const fileBlob = await handle.getFile();
  // Файл кэштен алынды
} catch (err) {
  // Файл жоқ, желіден жүктеледі және сақталады
  const fileBlob = await fetch('https://cdn.jsdelivr.net/.../ort-wasm-simd-threaded.asyncify.wasm').then(r => r.blob());
  const handle = await navigator.crossOriginStorage.requestFileHandle(
    hash,
    { create: true, origins: '*' },
  );
  const writableStream = await handle.createWritable();
  await writableStream.write(fileBlob);
  await writableStream.close();
}

Бұл әдіс кешті тиімді пайдалануға, қайталанатын тұтынуды азайтып, дискілік кеңістікті үнемдеуге және қолдану жылдамдығын арттыруға мүмкіндік береді.

Қорытынды

Transformers.js кітапханасы арқылы браузерде жасанды интеллект модельдерін іске қосу оқиғасында ресурстардың қайталанатын жүктелуі мен кештеудің шектеулері анықталды. Қазіргі браузер кэш изоляция жүйесі желі мен дискі кеңістігінің ұтымды пайдаланылуын тежейді. Cross-Origin Storage API ұсынысы мұндай кэш қайталауларын еңсеруге бағытталған. Бұл шешім ресурстарды криптохэш бойынша ортақтастырып, қолданушы тәжірибесін жақсартады және жүйелік шығындарды төмендетеді. Әзірге API әзірлеу кезеңінде тұр, бірақ оның маңызды әлеуеті бар екені анық.

Дереккөз: Hugging Face Blog

Басқа жаңалықтар

Back to top button