optozorax
4.59K subscribers
379 photos
60 videos
10 files
298 links
По деловым предложениям: optozorax.work@gmail.com.

Связь с админом через личку канала (кнопка в канале слева снизу).

Ютуб: https://www.youtube.com/@optozorax

Бусти: https://boosty.to/optozorax
Патреон: https://www.patreon.com

Сайт: optozorax.github.io
Download Telegram
Мне кажется что все эти споры про LLM не имеют смысла?

Вроде как суть кодящих LLM-агентов (с точки зрения самих компаний) не в том чтобы заменить программистов, а в том, чтобы ускорить кодинг и ресёрч новых архитектур нейронок, которые станут настоящим AGI. OpenAI как раз высказывала что к сентябрю этого года они хотят сделать intern ML researcher на основе своих моделей, и они активно в этом направлении развиваются. А полноценного автоматизированного исследователя хотят к марту 2028.

Я уверен на 90% что в ближайшие 5-10 лет найдут новую архитектуру искусственного интеллекта (тут я намеренно использую этот термин), который способен обучаться как человек: читая книгу, делая примеры, программируя; на собственном опыте, без поглощения всех данных интернета.

И тогда все споры про LLM пойдут в топку, поскольку эта новая сущность будет принципиально другой, сможет на 100% заменить некоторых людей и не будет иметь тех спорных свойств, что имеют текущие LLM.

Точно ли LLM - это то, на что нужно обращать столько внимания сейчас?
1👍54🥱10👎84🤔3🤡3😁2🔥1🥰1👀1
В качестве прокрастинации от монтажа видео я начал немного играться с path tracing'ом червоточин (!). И вот захотел сделать анимацию того как меняется фокусное расстояние камеры рядом с червоточиной, чтобы увидеть как бы она выглядела в реальности, когда мы своими глазами меняем фокусное расстояние. Такое 100% никто раньше не делал.

И вот для этого нужно ОЧЕНЬ много сэмплов, потому что очень много размытия из-за расфокуса. Поэтому я навайбкодил программу, которая берёт мой Portal Lab и рендерит эту анимацию в сырые float буферы каждого цвета, и в этих буферах аккумулирует цвета. И работает она так что она по кругу бегает по этим буферам и добавляет и добавляет сэмплов чтобы я мог её запускать много-много ночей подряд чтобы получать менее шумную картинку.

И вот я оставил эту программу работать в течении 20 часов (на моей 5080), пока скалолазался, гулял, спал. Но есть одна проблема...

Сегодня я решил посмотреть превью этих буферов и поставил их отрисовку в png. Смотрю на кадры, а они как будто все одни и те же, как будто фокус не меняется. Дождался пока сырые буферы отрисуются в png (это было долго), смотрю и ВСЕ кадры одинаковые, с одним и те же фокусом, анимации никакой нет, все эти 20 часов я рендерил ПЕРВЫЙ КАДР! ААААА!!

Начал грешить на кодекса что он неправильно написал код рендеринга и отправил его разбираться. Но как говорится, в расследовании преступления главное не выйти на самого себя. Что и прозошло, баг был в моей сцене, я забыл анимировать изменение фокуса...

Ну ладно, чего уже добру пропадать, раз я рендерил ОДИН ГРЁБАНЫЙ КАДР целых 20 часов, давайте хоть проведу аналитику насколько количество сэмплов влияет на то как выглядит итоговый кадр. Объединю их все и построю графики.

For your information: когда рендеришь path tracing'ом, то главная операция что ты делаешь - это просто берёшь рандомный луч и пускаешь его и записываешь цвет. Поэтому чем больше рандомных лучей, тем лучше. Поэтому если все мои кадры использовали независимый рандом, то их можно объединить и получить универсальный супер-пупер классный кадр.

Значит я рендерил по 32 сэмпла каждый проход по всем 720 кадрам, и уже успело случиться 10 таких проходов, поэтому каждый кадр у меня имеет 320 сэмплов. Далее, когда я объединяю эти кадры, для аналитики, то шаг будет равен 320 сэмплов. Максимальное количество сэмплов - 223_200 😵‍💫

Картинка будет показывать очень размытую червоточину, потому что с этого кадра начиналась анимация, там должен был меняться фокус чтобы фокусироситься на червоточине и за ней.

Вот вам картинки насколько шумно выглядит при размном количестве сэмплов (кадры без сжатия будут в комментариях).

Я думаю остановлюсь где-то на 5к-10к сэмплов в своей анимации.

И ещё в комментариях приложу прикольные графики!
1🔥59😁9😱7👍42❤‍🔥2🥰1🙏1👀1🆒1
Про самосилу и чёрные дыры.

В моём последнем видео я рассказывал о явлении само-силы, которое обнаружил совершенно случайно, когда считал как негативный портал телепортирует гравитацию.

Само-сила - это явление, когда гравитация тела создаёт силу, которая толкает это же тело, за счёт искривления пространства. У меня в порталах есть точка сингулярности на границах порталов, где угол в точке равен не 360 градусов, а все 720. И именно от этой точки создавалась отталкивающая само-сила, потому что она вела себя как точка с большой кривизной пространства. Её можно сгладить, чтобы она не была сингулярностью, и эффект будет оставаться примерно такой же.

И вот сегодня я задумался - а насколько реальна эта вещь? А то я всё думаю что мои портальчики - это лишь спекуляции и фиктивная физика, и никогда даже не задумывался о том чтобы это было применимо в реальности.

Так вот, само-сила от искривления пространства существует в реальности. Она работает как для гравитации, так и для электромагнетизма. Последнее совершенно неожиданно, ведь я то рассчитывал гравитацию, и само-силу обнаружил для неё, но электромагнетизм работает по похожим принципам. Проблема в том что само-сила электромагнетизма настолько слаба, что она ни в каких ситуациях не может показать хоть какой-то значимый вклад. Разве что только рядом с червоточиной нанометрового размера само-сила электромагнетизма может хоть чуток влиять на химию.

А вот гравитационная само-сила намного более сильна и наверное единственное место где её можно достоверно обнаружить - это при вращении массивных тел рядом с чёрной дырой. Даже в этом случае само-сила довольно слаба, но она оказывает измеримый эффект на тысячах и десятках тысяч оборотов.

И это как раз исследуют люди, которые занимаются лазерным интерферометром (это тот что зафиксировал гравитационные волны), который будет в космосе - LISA. Для LIGO эффект само-силы вроде слишком слабый чтобы всерьёз его учитывать.

Вот даже есть такое чтиво на эту тему: https://the-center-of-gravity.com/documents/333/1805.10385v2.pdf (я прочитал только абстракт)
1🔥60🥰2811👍6👀3💘3🦄3❤‍🔥1
optozorax
В Portal Lab появилась поддержка шейдеров. Мне это нужно для одного из следующих видео, где будет кое-что очень крутое. Последнюю неделю занимался тем что рефакторил Portal Lab и полностью поменял систему рисования. Теперь всё умеет рисоваться не только…
Media is too big
VIEW IN TELEGRAM
Симуляция жидкости с порталами и их искривлением гравитации

Изначально все частицы создаются с 0й скоростью, так что куда они летят полностью зависит от гравитационного поля.
2🔥12415👍9🤩8😍4❤‍🔥2🥰1💋1🆒1
Знаете, мы, программисты, регулярно замеряем ВРЕМЯ исполнения нашего кода. Но практически никогда не замеряем ПАМЯТЬ. За исключением когда мы аллоцируем её слишком много, или когда происходят утечки (и то не всегда замечаем этого). Да и вообще в стандартной библиотеке большинства языков нет никаких инструментов для того чтобы это делать.

И вот я недавно задумался об этом и решил как-то начать замерять память, чтобы нарабатывать тут интуицию и находить инсайты по поводу того как оптимизировать код. (на эту мысль в том числе натолкнул кризис ОЗУ в мире 😅)

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

Второй вариант я придумал вчера пока мылся в душе. Надо сделать кастомный аллокатор, который пишет в счётчик данные о том сколько байтов аллоцировано и сколько освобождено. Никак не влияет на перфоманс.

Теоретически можно использовать это, чтобы считать сколько каждый компонент в моей программе держит памяти, но это слишком сложно и ненадёжно, всё-таки владение на некоторую память часто убегает в другие места и может оказаться вариант что компонент сейчас держит минус килобайт данных, что является абсурдом.

Зато это можно очень надёжно использовать для других замеров: сколько каждый компонент производит аллокаций и какой поток памяти он аллоцирует и освобождает за единицу своего вычисления (просто какой-то временной памяти). Эти штуки вычисляются абсолютно надёжно и они могут что-то говорить про эффективность кода.

Ну и я быстренько накодил такое окно (см. картинку), которое показывает эти обе вещи. А ещё показывает сколько программа нааллоцировала в принципе. Пока это 35мб и вполне мало, хотя мне не нравится что простая сцена уже занимает столько памяти.

Глядя на окно я думал что моя softbody система вообще практически не производит аллокаций, за исключением начальной аллокации под все частицы итд. А оказывается там делается 4000 аллокаций/деаллокаций каждый кадр... Надо бы изучить что там такое происходит и оптимизировать, может быть это ускорит данный компонент.

А вообще меня смущает что я за свою карьеру программистом практически не видел грамотного опыта трекинга памяти, будь то количество аллокаций/деаллокаций внутри какой-то функции, или будь то тупо слежение за тем сколько какой-то объект занимает памяти в ОЗУ. Вот эта идея с аллокатором пришла мне в душе из космоса, ни в статье, ни в твиттере я ничего такого не видел раньше. И ни у меня, ни у моих знакомых нет никакой интуиции что сколько памяти занимает.

А вы хоть раз замеряли память своего кода, или количество аллокаций?
156👍15🔥11🤔21🥰1
Следующее видео на русском готово, осталось перевести на английский и можно выпускать
5🔥11621👍5🤡3👀3❤‍🔥2🆒2🥰1👏1🐳1