Обновить

Неожиданный факт о JavaScript всплыл, и снова стал актуален, при разработке приложения с генеративными нейросетями.. Оказывается, в языке нет поддержки 64-битных целых. По сути, доступно только 53-бита!

JavaScript Numbers are represented as IEEE 754 double-precision floats. Unfortunately, this means they lose integer precision for values beyond +/- 2^^53.

Факт давно известный, но от того не менее неприятный. Казалось бы, ну ничего страшного -- ведь есть, вроде бы, уже поддержка встроенного объекта BigInt и она добавлена во все современные браузеры.

Но если речь идет о работе с API (как в случае с параметром seed для StableDiffusion, например) и вы хотите использовать весь диапазон (а не его половину, как в automatic1111) -- то вы неизбежно сталкиваетесь с де/сериализацией объектом JSON, который для целочисленных значений использует стандартный тип Number.

И вуаля -- кроме обходного пути с передачей числа в виде строки, решения не видно! Ни на первый, ни на второй взгляд)

Если у кого-то есть идеи как этого избежать, или я что-то недопонял -- буду признателен за комментарий!) Проект давно закончен, но хотелось бы найти "красивое" решение.

UPD: подсказали еще вариант с модификацией всех вызовов JSON.parse() и JSON.stringify() -- см. https://github.com/tc39/proposal-json-parse-with-source (но есть нюансы).

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии6

Нейросети как дофаминовая яма для взрослых

Раньше существовал естественный барьер между «мне интересно» и «я пошёл это делать». Чтобы попробовать написать музыку, нужно было хотя бы немного разобраться в DAW. Чтобы полезть в SEO, требовалось прочитать документацию, собрать инструменты, понять терминологию. Чтобы сделать сайт на WebGL, сначала неплохо было научиться оптимизировать такие сайты.

Теперь этот барьер почти исчез. И неожиданно оказалось, что это не только преимущество…

Нейросети как дофаминовая яма для взрослых

Публикации