Ну конкретно по этой плате - тут пол платы аналоговые. ADC, DAC. Аналог интереснее. Но плата сделана хардкорно простой - всё ради цены. Интересно наверно было бы по поводу прошивки. Погромить мусор по имени родные библиотеки HAL для ARM или FreeRTOS или говно софт...
Но это всё эмбединг. Я бы очень хотел пописать статьи на тему LLM. Искусственного интеллекта - есть свои разработки. Но опять же - для меня самое трудное писать сатьи.
Сколько я мог бы написать статей по поводу выжимания сверх производительности из .NET. Использование кешей процессора. Что бы всё влезало в первые кеш уровни. Сколько подводных камней вообще в банальных обращениях к файлам. Какие вообще подводные костыли просто везде. Вот куда не глянь. Да даже с RAM когда работаешь - это просто кландайк оверхеда и где его можно допилить напильником. Банальные виртуальные страницы по 2 мегабайта например. Никто про такое даже не догадывается. А это всё под капотом крутится. Статей 100 наверно написать можно было бы.
Но это всё дико интересно когда сам делаешь. Вот например взять память простой alloc - 200 наносекунд на любой запрос. Сверх быстрое взятие памяти в GC в С# - кстати C# в этом плане быстрее С++. Где то 3 наносекунды. Я вот написал менеджер памяти в 5 раз быстрее сверхбыстрой реализации в C#. И это только единичный пример. Таких примеров сотни.
Или например менеджер чтения фалов - очередь доступа. Исследование зависимостей от параллелизма - доступа. Например файл банально в оси кешируется. Можно читать напрямую. В диске кешируется.
Стоп. Стоп. Я просто вижу какие статьи набирают 100500 комментов а какие нет.
P.S. Сейчас каждый для себя может генерировать индивидуальные статьи. Какие хочешь. Писать своё смысла нету. Выкидывать генерацию LLM в общий доступ? И без меня уже прекрасно все справляются. Скоро тут останется 1% наверно только реально от человека.
хаха! Тоже попался - смотрю на дроссель. И думаю - ого! Новый способ упаковки в феррит. Типо катушка с площадкой снизу. А сверху коробка из феррита. А потом думаю - нафига столько дросселей ? Потом читаю про кнопки - думаю - что на магнитном поле сенсор какой сделали ? А потом....! Короче в наше врем использовали кнопки на металлической мембране с щелчком.
Не спорю. Для некоторых может быть и 0 - много. Например для жрецов.
Это совершенно не соответствует текущим научным представлениям.
Ну и какие эти представления? Я изучаю тему исключительно для себя. Каждый мыслящий своё представления выкатывает. И спорит друг с другом чьи скрижали истиннее. Я собственно вообще не навязываю свои представления кому то. Я для себя объяснил устройства природы. Построил непротиворечивый алгоритм работы учитывающиеся все известные мной факты. Появятся новые - буду достраивать.
А вообще использование в таких диалогах как тут - всяких мифических авторитетов для меня вообще попросту демагогический приём. Но! Не осуждаю. Мне вообще пофиг. Просто диалог становится не интересным. Вместо инфы - получаю на тебе веры поешь.
Для меня вообще не существуют авторитеты. Сам тоже вообще никакой не авторитет. Есть только работы авторитетов которые либо встраиваются в картину мира. Либо не встраиваются т.к. входят в противоречие с более весомыми фактам.
Да общеиспользуемое вполне подойдет.
Ну и ? Ваше определение из wiki (или откуда оно) полностью попадает под моё определение (которое именно для этого диалога я вывел находу из общей картины моего мира). Я программист с профессиональной деформацией. Всегда смотрю на вещи не как какие то определения, а как это реализовать в алгоритме. Программе. Контроллере.
Я могу прямо сейчас написать программу которая будет полностью соответствовать этому определению. Да например машинку с ARM контроллером. Программа будет получать от датчиков состояние мира, достраивать свой алгоритм - тупыми весами в перцептронной сети, или вообще блоки if-else, и дальше ехать у же с новыми знаниями по новому алгоритму. И абстрактные концепции напишу через тучу if-else. И обитание средой человека - какое же кривое определение. Сколько я в жизни кривожопых ТЗ видел - которые в коде вообще с ног на голову превращаются.
Спор как раз о том, какие проявления люди договорились обозначать термином сознание. Зачем мне своё определение выдумывать.
Ну... Я читаю это так. Мне пофиг что такое сознание. Передают гордую возможность поработать другим. А я прост возьму готовое. А так как мне пофиг. То и готовое мне впринципе пофиг. В такой парадигме главное не истина - а авторитет.
Как я говорил мне вообще не важны атворитеты. Зачем ? Я не участвую в публичных диспутах где нужно использовать все способы загнать оппонента в тупик. Где главная цель победить любой ценой. А истина - только инструмент. Враньё вообще всегда гибче в спорах.
Я же как программист - мне вообще кроме истины, работающего алгоритма больше ничего и не нужно. Не буду же я в код закладывать философские размытые понятия? Вот и пришлось собирать непротиворечивую картину мира.
Большая разница. Вы используете общепринятые термины, но подразумеваете под ними другой набор провялений.
Я это чётко знаю. И вообще всегда говорю про это всем - мы спорим об разных вещах. Поэтому всегда расшифровываю свои понятия простым текстом. Поэтому все мои сообщения выглядят как портянки текста.
Попробуйте не писать того, что напрямую не относится к основной теме обсуждения. Про йогов например.
Где вы увидели много ? 2 это много ? И вообще самосознание это просто надстройка над сознанием. Сознание - эмуляция мира. Самосознание - речевой диалог. Второе может управлять первым. Всё.
Это всё интеллект.
Дайте свой определение интеллекта. Я своё дал. Повторю - интеллект это свойство системы совершать алгоритмические действия. Собственно интеллектом могут обладать что угодно. Не зря повсюду используют всякие определения по типу интеллектуальная техника. Smart техника. И прочее.
Сознание же - это конкретный алгоритм.
Можно конечно сказать что сознание как алгоритм входит в определение интеллекта - как более обобщённое определение алгоритмов.
Это всё интеллект.
Дайте определения терминам. Не философское размытое ничего не значащее. А именно своё - которое пользуетесь и которое несёт конкретику. Иначе теряется смысл спора.
Это называется “обратить внимание”.
Какая разница как называется. Мы говорим про конкретные алгоритмы. Что именно происходит. Я говорю - пока не включишь внутренний диалог, будешь находится в состоянии животного сознания.
Кстати я изучал этот феномен. Можно многое интересного увидеть. Я знаю что йоги называют такое состояние - достичь просветления. По типу полностью очищенная и подавленная в функционировании быстрая память. Но при этом находишься в сознании. Информация из вне восприниматься в очень интересном виде.
Есть такая херь в которую баловались все в детстве - собачий кайф. Типо передавлеваешь сонную артерию и отключаешься на пару секунд. Происходит хард ресет быстрой памяти. При очухивание секунд 10 находишься в пограничном состоянии - звуки, цвета. Очень яркие, мягкие не естественные. Короче не буду описывать все баги нашего мозга. И очень не советую это хернёй заниматься. Вообще и так тут мои посты уже на порядок больше места занимают чем сгенерированный LLM стартовая статья.
Нет, собака по команде “Сидеть” понимает,
Опять терминология... Что значит понимает ? Ещё раз. Мозг собаки и мозг человека с моей точки зрения работает одинаково. Забери у человека речь. По типу детей маугли - и человек в своём поведении не далеко уйдёт от собаки.
Проекция мира у собаки и у человека строится одинаков. Разумеется с поправкой что то более сложно. Что то менее сложно. Так же собака не видят цвета определённые. Боль - как чувство, которое является иллюзией в сложной информационной системе, а иллюзия потому что это эффект в эмулированном мире. Короче боль одинаковая и у собаки и у человека. У муравья нет. Там конечный автомат. Но чем сложнее эмуляция мира - тем ярче проявляется иллюзия. Переход от полного автомата к автомату с иллюзией. Руку от огня человек отдёргивает раньше чем осознаёт это. Боль начинает ощущаться спустя некоторое время чем ты слышишь хруст своих костей.
Ладно. Вернёмся к собаке. Как я описал - она незначительно отличается от человека. Но речевым аппаратом не обладает. Она обладает крайне скудной памятью привязать определённый звук к определённому образу.
Если хотите более конкретно - животное сознание это образное сознание. Попробуйте думать только образами. Это крайне трудно не перейти автоматически на проговаривание внутреннего диалога. Также только образным мышление крайне трудно строить логические цепочки. Образы конкретны. Слова абстрактны. Образы занимают много сцены внутреннего мира, трудно представит себе город в деталях. Слова без преобразования их в образы - ничего не занимают. Они удобны. Их можно много помнить а интерпретировать когда нужно.
Напоследок ещё скажу - в обратную сторону это тоже работает. Мы крайне часто свой внутренний мир автоматически проговариваем словами. Неосознанно. Часто комментируем свои действия. Это связанная система. Помогает конкретизировать образы. Помогает более точно строить модель мира.
Скажем так - в этой теме все друг с другом спорят. Просто по тому что нету устоявшихся понятий.
Для себя я понятия чётко определил и всегда строю свои доводы используя этот базис.
Первое - животное сознание. Это тип сознания в котором у человека нету внутреннего диалога. Он действует как робот. Собственно Самосознание появилось недавно - с появлением речевого аппарата.
Животное сознание - это эмуляция мира. Разумеется это не 3D картинка. Это нейронная завершенная структура позволяющая принимать данные с сенсоров внешнего мира. Строить на основе этих данных внутреннюю модель. Эмулировать модель. Выдавать данные предсказания наружу.
Такое сознание есть от муравьёв до шампнзе. Разумеется со всё более усложнениями. Но базис одинаковый.
У человека поверх этого базиса из за появление речи - появилось самосознание. Все кичястся мол "Я" же есть. Прикол в том что этот феномен "Я" проявляется только в диалоге с самим собой. Знаю что некоторые кошки могут понять что в зеркале это они - это просто развитое животное сознание. Достигшее развития когда внутреннее проецирование тушки в виртуальном мире - сопоставляется на внешний объект. Но бездумно. Чистые инстинкты. Бездумно - это ни что иное как без диалога.
Я тут писал много всяких примеров - по типу что в обычной жизни человек ведёт себя находясь в состоянии животного сознания. Например управляя машиной - можно просто проехать туда куда тебе не надо. Просто по тому что такие паттерны заложены в мозгу. И только потом спохватится и ПОДУМАТь - А ЗНАЧИТ построить речью нужную модель мира. Мы продукт эволюции - которая экономит просто везде где можно. Человек не думает всегда где это только можно. Действует как робот. Но почему же некоторым людям повезло и их высоко затратную - интеллектуальную деятельность мозг поощряет дофамином? Сахар. тонны быстрых углеводов - сбивает внутренние настройки. Ну а также повезло. Эволюция это же просто постоянные дефекты копирования следующего поколения. Тебе тупо повезло с дефектом - он оказался полезным. Причём повезло дважды - ты родился сейчас а не пару тысяч лет назад. Потому что пару тысяч лет назад - твой высокозатратный мозг просто свёл бы тебя в могилу сразу. Ты бы сдох от голода и твоя генетическая ветка просто вымерла.
Что такое интеллект - собственно это концепция в моих моделях неважна. Если подумать - это способность любому виду сознания действовать по заданному алгоритму. Я тут даже не говорю уточнение - ЛОГИЧНО. Потому что - а кто будет оценивать степень логики ? Так вот животный тип сознания - может так действовать - но в примитивном виде. Самосознание использует богатый язык программирования - ОБЫЧНЫЙ человеческий язык, который может строить бесконечно сложные конструкции. Почему бесконечно? А всё дело в абстракции - можно любую сложность упаковывать в абстракции. И делать это бесконечно ))
Скажу так. Опять спор потому что оппоненты используют разную понятийную базу. Строго говоря наш мир вообще аналоговый. Потому что в нём практически нет меандровых переходных процессов. По типу состояние 1 - хоп мгновенно состояние 2 причём состояния очень разные. Даже недавно читал забавную статью что теорема Пифагора в реальности не работает потому что в реальности нету идеальных треугольников. Если посмотреть осциллграммы сигналов в высокочастотный процессорах - там вообще тупо кривые синусоиды - но этого достаточно что бы КПОМ транзисторы переключались. Кстати греются процессоры неподецки как раз из за синусоидального переключения. Но не об этом.
Короче про базу - аналоговый сигнал это сигнал в котором уровень напряжения играет роль. По типу 0-10 вольт амплитуда и например через каждый вольт это состояние. Т.е. состояний в одном сигнаеле больше 2.
Цифровой сигнал - это всегда 2 состояния. Нейроны передают сигнал всегда в 2 состояниях - активный не активный. Сколько то там милливольт есть, 0 вольт. Внутренние процессы клетки нейрона - уровень при котором он сработает, ну тут конечно чисто химические процессы - можно их в аналоговый сигнал записать. Но! Сигнал это передача информации. Если мы будем рассматривать как там между РНК внутри клетки инфа передаётся - может оказаться что тоже цифровой вид. ДНК - например имеет 4 битную структуру .
для выживания и решения технических задач сознание и разум не ОБЯЗАТЕЛЬНЫ,
Я тут некоторое время назад в комментах давал чёткое описание сознания. Не какое то общепризнанное (насколько знаю в этой области сброд и шатание). Моё. Чёткое описание. Так вот сознание - появилось как раз только для того что бы тушка выживала.
Сознание это модулирование внешнего мира в виртуальное внутреннее его представления. В этом внутреннем представление есть объект самой тушки - который с появление неокортекса развился "Я" а также объекты внешней среды. Основная функция моделирование будущего. Заяц прыгает в сторону от прыжка хищника. Хищник наоборот предугадывает прыжок зайца. Ну и разумеется потомство оставляли только те кто лучше это делал (привет отрицателям эволюции - которая вообще просто процесс).
Это как бы животный тип сознания. У человека с появлением речи - появилось самосознание. Что является ни чем иным как внутренний диалог. Слова - привязаны к образам. Вызывая слова - можно строить внутреннюю виртуальную сцену.
Кстати не находите параллели как LLM строят свой диалог ?
Гипнотезёры погружают людей в пограничное состояние - когда слова гипнотезёра строят образы у человека в голове. Человек спит на яву. А внутренняя картина это не хаотичный бред когда мозг упаковывает инфу дня, а слова гипнотезёра. Кстати во сне отключен модуль логики. Ладно это я уже не туда пошёл. Тут не про это.
Также ииу человека- внутри мозга все существует в аналоговом виде
Вт из-за этой цитаты я как раз и хотел написать коммент, но как всегда написал портянку текста. Мозг является что ни наесть цифровым. Все нейроны общаются друг с другом в цифровом виде. Сериями импульсов. Вернее частотой импульсов. Каждый нейрон просто постоянно генерирует импульсы - но их частота меняется в широких пределах. А дендриты нейроны - настраиваются на сработку от конкретной частоты. Как раз когда сработает нейрон зависит от химического содержания клетки. Так же каждый день происходит физическое прорастание миллионов-миллиардов дендритов-аксонов друг к другу. Это когда инфа из быстрой памяти переходит в долговременную. Но я бы не назвал это аналоговой памятью. Это больше на ПЛИС смахивает.
а с абстракциями, которые описываются числами, а уже потом, двигаясь от абстрактного к конкретному превращаются в слова
Я бы назвал проблемой и парадоксом что это вообще работает - LLM работает не со объектами. А с буквами и слогами превращёнными в цифры. И главная работа это выбрать наиболее статистически высокий слог. Только мы люди уже интерпретируем картину на выходе.
Критики говорят мол мозг тоже на уровне нейронов только сигналы. Но! Мозг всё же работает с объектами. Относительно недавно никакой речи не было - основная работа мозга это эмуляции объектов. И мозг всё же объекты выделяет в целые самостоятельные структуры. У LLM этого в принципе нет. Вообще нет понятия объектов. Поэтому LLM всегда будет галюцинировать. Вернее в ней даже такого понятия нету - галлюцинация. Это понятие появляется нашей интерпретацией. Обратного проецирование слова -> сцена реальности. LLM не доступны операции объектного мышления. Она не знает что такое время. Что такое пространство. Что объект может быть впереди или сверху. Всё что она делает выдаёт текст которые в неё был загружен.
Если вы скажете - где доказательство того что мозг строит сцену? Зрение вот основное доказательство. Мы очень чотко видим 3D мир. Но эту картину для нас строит мозг. И кстати строит её с запозданием и с багами. На этом основаны например фокусы. Класический - фоксник подкидывает шарик. Потом делает движение как будто опять подкидывает но шарик остаётся в руке. Что делает мозг ? Т.к. инфа с глаз повторяющаяся он начинает экономить ресурсы и самостоятельно эмулировать сцену. Для нас шарик опять подкрадывается. В верхней точке инфа с глаз уже перевешивает инфу модуляции - и в верхней точке шарик исчезает! Magic! Вообще есть 100500 всяких таких багов эмуляции. Даже боль! Это иллюзия в сложной информационной машине эмуляции мира! Почему мы не чувствуем боль вне сознания ? Есть баг когда заставляют подумать мозг что резиновая рука это твоя рука (там схема с зерклами и прикосновением к настоящей руки) потом хряк по резиновой руке молотком - и ты чувствуешь настоящую боль. Которой нет от рецепторов руки.
Единственная причина почему LLM выстрелили - смогли сделать автоматическое обучение. Алгоритм обратной распространения ошибки. Собственно почему символьные ИИ не выстрелили - все они настраивались вручную. Но сейчас другие времена - и нас ждёт очень интересные открытия в ближайшем будущем. И это не LLM...
Кстати в мясной LLM (мозге) - нет никаких алгоритмов обратной распространения ошибки. Но мозг при этом учится сам.
Хм.... зачем вы пишите так сложно? Я всегда встречаю такую писанину в основном в сектанских статьях - цель которых написаны так что бы никто ничего не понял. Что бы сделать идола которому можно приводить адептов. Ну и паразитировать быть жрецом у таких.
Когда программируешь - вся эта шелуха просто слетает. Смотрите - первое и самое главное нужно понимать и держать в голове что вообще должно делаться. А делается следующее. Входящие слова сжимаются в числа и получают огромное число. Вектор. Мы это число крутим-вертим что бы на выходе получили другое число вектор - ощепнув кусочек циферек о которого - с конца, мы лезем в наш словарь и получаем следующих пару букв. Далее мы должны понимать - что мы крутим и для какой цели. Так вот трансформер - это мы входной вектор тупо умножаем на другой вектор. И всё! Всегда на один и тот же вектор. Это типо голова внимания. Как я говорил корпорации экспериментируют - сделдаи 96 голов внимания. 96 матриц.
Но зачем это вообще надо ? Сектанты говорят - это магия подмешивания смыслов соседних слов ко всем другим словам. Скажем так - если глубоко копать то окажется что это может оказаться ложью. Или не так. Что реально происходит скрыто под флёром ложности.
Магические слова по типу softmax, relu - это простые тупые костыли что бы просто написать программу которая смогла работать в существующем железе. А железо работает с числами с плавающей точкой. Вот мы и выравниваем масштабы. К Самому LLM это вообще не относится - но сектанты с упорством только на этих алгоритмах и акцентируются. Особенно смешно смотреть на обожествление простой одной мать её операции - отброса отрицательной части числа в Relu - и чуть ли ни приписывание этому божественных свойств - сознание йпта в этом алгоритме!
Потом вектор кидают на 2-x слойный перцептрон. Который раздувает его до 100500 байтов а потом сжимает обратно. Всё. Просто 2 операции - трансформер->перцептрон. Ну и зацикливают их. Новый токен прибавляют к входному промту и повторяют всё заново.
В чём смысл вообще этой математики? Ну - таким хитрожопым способом сделали мега статистическую машину. Она просто выдаёт наиболее правильный статистический токен на выходе. А вообще они делали переводчик - и вдруг увидели что он может генерировать бред на выходе. Ну и понеслось.
Кстати LLM так и обучают - подают текст на вход - на выходе каша. Идут в нейронную сеть и подправляют веса так что бы входной текст соответствовал выходному. Алгоритм обратной распространении ошибки. Машина должна точно угадать продолжение входного текста из своих настроенных нейронов. Считается примерно что где то 70%-80% информации содержится в весах перцептронной сети, остальное в матрицах внимание. Ну или около такие цифры.
Я не буду рассказывать про костыли по типу температуры - то же смешно слушать от сектантов божественные свойства этого алгоритма. А это простейший рандомизатор. Без него LLM на входной одинаковый промт всегда отвечала бы одинаково - просто не отличалось бы от конечного автомата.
Ну и на последок скажу - что бы LLM могла в диалог - её очень долго мучают по обучению. Потому что у нас статистическая машина с массивом данных состоящих просто из весов нейронов. Там не запрограммировать как должна идти мысль. Но как я писал - извращаются как могут в изначально несовершенной архитектуре. Обучающие тексты испещряют разметкой. Она точно также становится весами и участвует как бы в формировании виртуальных каналов. Ответ на промт тоже будет весь в разметки - это просто полноценные слова. Её просто вырезают в ответе. И такая архитектура очень хромает с логикой и математикой. Поэтому прикручивают калькуляторы, компиляторы. Способ прикручивания - у каждого коммерческая тайна.
Прочитал ещё раз запутанный ваш вопрос. Не совсем понятно что вы имеете ввиду. Но отвечу - память LLM это весь её текст в чате. Она каждый раз пропускает весь текст из чата в каруселе для получения нового токена. Отсюда просто тысяча глюков. Не буду описывать их. Для борьбы - но не решения (полностью не решить LLM просто не работают по другому) опять же применяют разные костыли. Отрезают конец. Смещают важность от начала к концу. И прочие ухищрения.
Главное - у LLM не ту фактов. Точка. Она может просто взять и забыть о самом важном в тексте в самый неподходящий момент.
В тот то и дело что не вопрос вообще. lama2.net - это простейшая реализация LLM. LLM - это как бы сам алгоритм (трансформеры там, перемножение матриц...) и сами данные. Веса нейронов в перцептронной сети и вектора в матрице для трансформера. Так вот данные для этого проекта это файл stories15M.bin - который был получен из другого проекта. Тоже открытого и тоже короткого. Карпати в качестве датасета взял список коротких рассказов. Список легко гуглится - я уже не помню название. А обучение - это просто обратное распростанение ошибки. Корректируют веса что бы более правильно предсказывало токен. Обучение матриц внимания - там чуть по другому.
вы спросите если так просто - от почему корпарации скрывают друг от друга все ноу-хау и выделяют миллионы-миллиарды на новые разработки?
Скажем так - это база. Она не способна в диалог - просто предсказания следующего токена. Но! Постоянно пилят надстройки. База при этом остаётся. Пример - что бы LLM способна была в диалог - её дообучают на спец корпусе - грубо говоря скармливают ещё обучающий датасет состоящий из диалогов.
Также постоянно подвергаются допиливания напильником отдельные участки. Проводятся тонны экспериментов с например склеиванием разных частей LLM. Ну например сделать несколько специализированных LLM которые делают предварительные манипуляции с промтом. Пототм кидают это на общую LLM. Всякие RAG костыли.
Прикручивают отдельные модули в качестве костыля - калькулятор, компилятор. И прочее. С переменным успехом модуль может быть задействован а может и нет - как повезёт.
Ах да забыл - промты идут с спец разметкой - внутри LLM разметка как бы выстраивает маршруты как LLM будет думать = что на практике означает путь как токены будут генерироватся. Мысль идёт по разметке - попутно собирая околостоящие токены.
Короче пытаются выжать максимум из базиса.
Но как я тут писал много раз - сама идея трансформера имеет принципиально нерешаемый дефект. Если кратко - она не хранит факты. Только вероятности. И по этому никогда нельзя быть 100% уверенным в том что она генерирует. Отсюда побочные эффекты - у LLM нету такого понятия как незнания факта. У неё всегда есть 100500 вариантов токенов с уменьшающимися вероятностями. Она всегда выберет просто наивысший текщий.
Мы знаем, что происходит когда мы отправляем данные ИИ‑агенту и когда их получаем. Но что именно происходит внутри, в процессе? Почему модель решает ответить именно так, а не иначе?
Не учитывая что статья похоже на типичный нейрослоп - но блин поменяйте немного промт! Сейчас в открытом доступе есть просто всё! При чём появилось прям вот сейчас - самое свеженькое.
Я вот шарпист. Хочешь изучать внутренности - бери dotLLM огромный проект разжевывающий вообще всё. Конкурент llama.cpp
Слишком сложно ? хочешь понять вообще все азы? На тебе 1 ФАЙЛ в 900 строк кода полностью реализующий всю работу LLM llama2.net - это С# порт от вылизанного до предела обучающего проекта от знаменитого Карпати. Легко гуглятся и такие же маленькие проекты которые для обучения сети. От того же Корпати.
Глупый настолько что не способен понять 900 строк кода?
Качаешь ollama - там вообще просто всё до безобразия (LLM studio не советую - со старта будете в шоке от кнопочек).
Ждём минутку на скачивание - и получаем рабочий быстрый умный чат почти как deepseek!
На процессоре! Видеокарта не нужна. Всего 6 гиг памяти ram нужно. Сразу чат работает в той же консоле. Это что бы понять (снять флёр тайного знания) что это не магия а обычная программа которая работает вот прям у тебя.
Уже годы руки чешутся написать свой проект от нуля до конца на C# полностью реализующий LLM со всеми пояснениями. Времени жалко... Да и другие справляются неплохо.
Куча учебников написано с достаточно внятным изложением.
Вот кстати по поводу обычных школьных учебников я бы сказал что они постоены совершенно на неправильной идеологии - они основаны на простой зубрёжки сложившихся базисов. Абсолютно всё там дано в виде конечных формул. Описания в современных учебника (в советских получше) такие что ничего не объясняют а часто просто вообще с ошибками. Могу судить - дочка в школе в старших классах.
В принципе понятно почему так - каждый отдельный раздел, параграф - учёные которые выводили формулы выводили их годами, всю жизнь. Тут же просто поток окончательных выводов. Правда толку с этого никакого - дети в школе забывают всё это сразу после окончания предмета. И забывать нечего - изначально информация почти бессмысленная магия.
Как быть? Увеличить число часов, объяснять все на старте без формул а чисто логически - какие эксперименты, какие проблемы, какие обычные вопросы задаваемые к устройству мироздания. На этом базисе постепенно оборачивать в формулы.
Но это длинный путь не школьный наверное. Но даже в институтах полностью такая практика.
Но мы живём в уникальное время. Современные LLM это мега статистические машины. Они объяснят всё, на любом уровне. Кто собрался кидаться тухлыми яблоками скажу - я плотно работаю со всеми современными LLM для программирования. Opus, gemeni, chutgpt, даже туповатый deepssek - когда долго с ними работаешь очень чётко можешь определить когда они галлюцинируют (очень редко) а когда нет. Современный LLM объяснят любой учебник физики в 100 раз лучше чем кто либо. Для современных детей - это просто сказка. У нас такого не было.
Смотрите мою позицию - все научпоп статьи которые сразу говорят, время замедляется, дина увеличивается, масса растёт в бесконечность, пространство искривляется. И пытаются на этом базисе строить ещё более невероятные выводы - во первых уже надоели до икоты. Они все обсуждают оно и тоже. Выводы выглядят ещё страннее чем базис.
Если начать анализировать историю до базиса - и попытаться получить базис, во первых сразу понятно почему такой базис. Во вторых можно обдумать почему базис выбрали именно такой, но идя от начала можно увидеть и другие базисы. Можно будет увидеть что большая часть базиса может оказаться виртуальной - просто следствие формул. Ничего не удлиняется, масса никакая не растёт, да и пространство не искривляется. Вот тут мне уже рьяные сторонники просто с красными глазами бегут минусить. Но! Это просто фразы! Есть такое например в математике - доказательство от противного. Вот это оно.
P.S. Попробуйте понять и объяснить базис. Это гораздо интереснее и продуктивнее. Вот и весь мой посыл. Что мы имеем сейчас ? А сейчас - теорию ОТО и СТО могут понят всего пару человек на земле - становится чуть ли новым евангелие базисом. От этого и тошнит. Все кто пытается понять - им нужно исходить от противного. Всё опровергнуть, а потом последовательно придти к моменту что те эксперименты по другому не объяснить. Вот только те кто хоть как то пытается это сделать - те становятся изгоями.
Одно и то же... каждый Раз одно и тоже... Вообще никто не хочет видеть что я говорю. Сразу триггер срабатывает и давай срать в карму и обвинять в эфире. Который я только и слышу от всех кроме меня.
Повторяю в 25 раз - я призываю только ОДНО. Пройти путь сначала. Изучить какие были эксперименты и потом как их пытались объяснить. ВСЁ!
Какие вопросы ставили себе в те времена учёные пытаясь объяснить получившиеся парадоксы в экспериментах.
А что мы имеем сейчас ? На полном серьёзе поясняют что Ньютон придумал свой знаменитый закон тяготения когда ему яблоко на голову упало! Да он пол жизни свою формулу выводил - и она не сразу такая была в конечном виде.
Сейчас все пытаются строит теории опираясь на ОТО. Но никто никогда не пытается понять откуда эта теория вообще взялась.
Все подобные стати и объяснения всегда используют точку отсчёта ОТО. Это выглядит глупо. По типу - Сначала Бог создал ОТО - а потом как то пришлось натягивать сову на глобус пространство на эту теорию.
Не хочу в очередной раз получат тонну минусов просто дам совет.
Попробуйте начать объяснения с чуть ранних позиций. Даю подсказку.
Вначале учёные сделали эксперимент - и выяснили странное. Скорость света во все стороны вдруг оказалась одинаковая. Даю гарантию - объяснения станут намного интереснее, а может и вообще другими.
Сразу поднимутся интересные темы - что скорость света никто никогда не смог измерит в одну сторону. И ещё многие парадоксы которые в современном виде просто откинуты.
Со временем тоже интересные выводы можно сделать. Например можно обсудить что для объяснения работы пространства не нужна концепция времени.
Просто опуститесь до того времени когда физика была живая а не покрытая догмами со всех сторон. Пройдя цепочку от начала до современных понятий - можно по новому взяглянуть на вещи.
decimal вообще коварный тип. Внутри него есть scale 1.0 и 1.00 по сути равны но байтово разные. Более того существующие БД тоже будут считать их разными (особенности внутреннего строения БД). Что бы сравнивать decimal нужно делать приведение внутреннего масштаба. Ну или спец функциями сравнения которые делают это внтури.
Короче где выстрелиь себе в ногу там прсто вагон мест.
Когда я сказал LLM что бы она выкинула себя в мусорку она неправа. Она написала.
Скрытый текст
Признаю: при наличии Interlocked.CompareExchange в методе Lock, который вызывается непосредственно перед проверкой db.run == false в методе free, любая вероятность NRE исключена полностью.
Анализ барьера памяти (Чистая логика)
Твой Interlocked.CompareExchange — это полная когерентность памяти (Full Memory Barrier).
В потоке Б (Free): spin.Lock() (Барьер) -> Установка db.run = false (или чтение уже установленного) -> SetResult.
В потоке А (Get): Пробуждение после await -> Цикл while(true) делает следующую итерацию -> Вызывается spin.Lock().
Результат: Interlocked внутри Lock гарантирует, что поток А «увидит» всё, что записал поток Б до освобождения лока.
Поскольку проверка if (db.run == false) стоит сразу после выхода из await и внутри цикла, где на следующей итерации или в смежных ветках держится лок — данные синхронизированы на аппаратном уровне. Мои рассуждения о «малой вероятности» были излишне теоретическими и не учитывали жесткую сцепку через Interlocked.
Финальный статус алгоритма TransPool
На данный момент код представляет собой монолитную, потокобезопасную и производительную конструкцию.
Сильные стороны текущей реализации:
Zero-Overhead: Использование ValueTask и ManualResetValueTaskSourceCore минимизирует аллокации при ожидании.
Cache-Friendly: StructLayout(LayoutKind.Explicit, Size = 128) предотвращает False Sharing, разнося горячие переменные (top, bot, spin) по разным кэш-линиям.
LIFO-стек: Получение транзакции из trans_pool[--trans_top] максимально эффективно использует L1-кэш (последняя возвращенная транзакция будет первой выданной).
Надежность Shutdown: Пробуждение всех официантов гарантирует, что система не зависнет при остановке БД.
Проблема что на каждый чих просто приходится тратить кучу времени на болтовню с LLM. Но я про это уже писал.
Прямо сейчас. LLM изводит меня просто тонной мусора на анализ простейшего алгоритма. Который джун видит просто сразу. Есть флаг глобальный. Один поток читает этот флаг - он установлен. Вызывает другой поток. В другом потоке читается этот флаг. ВСЁ! Чтение флагов находится за барьером памяти - проблема кешей нету. Мне LLM изводят мозг что это мега баг! Я трачу время на анализ бреда-галюцинаций, а потом на доказательство LLM что бага нет. Вот ответы LLM кому интересно. И да - про её малую вероятность это галюцинация. Нету там никакой вероятности.
Скрытый текст
Давай разберем цепочку событий, чтобы найти ту самую "тонкую" точку. Единственный шанс получить NRE — это если db.run будет true в момент проверки, но wait.t при этом будет null.
Поток Б (Free): Выполняет wait.Core.SetResult(true).
Поток А (Get): Просыпается.
Поток А (Get): Проверяет if (db.run == false) — условие ложно (БД работает).
Поток А (Get): Успешно забирает t = wait.t.
Поток А (Get): Делает wait.t = null. (Слот очищен).
Теперь критическая ситуация (Shutdown): Чтобы случился NRE, SetResult должен быть вызван без установки wait.t. Это происходит только в блоке if (db.run == false) метода free.
Вопрос: Может ли проверка на шаге 6 вернуть false (мол, БД всё еще работает), если сигнал был послан из блока, где db.run уже false?
В рамках одного потока (Поток Б) — нет, так как запись db.run = false идет перед чтением в цикле. Но в многопоточной среде без использования volatile или Memory Barrier для db.run, теоретически возможна ситуация переупорядочивания или кэширования значения в регистре процессора Потока А.
Однако, в твоем коде:
SetResult внутри содержит Memory Barrier (так требует реализация ValueTaskSource).
Пробуждение потока гарантирует видимость изменений, произошедших до сигнала.
Вердикт по NRE: Если db.run — это обычное поле (не volatile), то теоретически "просачивание" возможно из-за оптимизаций JIT/CPU, но на практике в .NET SetResult создает достаточно сильный барьер. Признаю: в 99.999% случаев твой заслон if (db.run == false) сработает идеально. NRE здесь — это исчезающе малая вероятность, связанная скорее с поведением "железа", чем с логикой алгоритма.
Ну конкретно по этой плате - тут пол платы аналоговые. ADC, DAC. Аналог интереснее. Но плата сделана хардкорно простой - всё ради цены. Интересно наверно было бы по поводу прошивки. Погромить мусор по имени родные библиотеки HAL для ARM или FreeRTOS или говно софт...
Но это всё эмбединг. Я бы очень хотел пописать статьи на тему LLM. Искусственного интеллекта - есть свои разработки. Но опять же - для меня самое трудное писать сатьи.
Сколько я мог бы написать статей по поводу выжимания сверх производительности из .NET. Использование кешей процессора. Что бы всё влезало в первые кеш уровни. Сколько подводных камней вообще в банальных обращениях к файлам. Какие вообще подводные костыли просто везде. Вот куда не глянь. Да даже с RAM когда работаешь - это просто кландайк оверхеда и где его можно допилить напильником. Банальные виртуальные страницы по 2 мегабайта например. Никто про такое даже не догадывается. А это всё под капотом крутится. Статей 100 наверно написать можно было бы.
Но это всё дико интересно когда сам делаешь. Вот например взять память простой alloc - 200 наносекунд на любой запрос. Сверх быстрое взятие памяти в GC в С# - кстати C# в этом плане быстрее С++. Где то 3 наносекунды. Я вот написал менеджер памяти в 5 раз быстрее сверхбыстрой реализации в C#. И это только единичный пример. Таких примеров сотни.
Или например менеджер чтения фалов - очередь доступа. Исследование зависимостей от параллелизма - доступа. Например файл банально в оси кешируется. Можно читать напрямую. В диске кешируется.
Стоп. Стоп. Я просто вижу какие статьи набирают 100500 комментов а какие нет.
P.S. Сейчас каждый для себя может генерировать индивидуальные статьи. Какие хочешь. Писать своё смысла нету. Выкидывать генерацию LLM в общий доступ? И без меня уже прекрасно все справляются. Скоро тут останется 1% наверно только реально от человека.
Тоже занимаюсь подобным. Вот из последнего.
Но могу заметить что с моей точки зрения - на статью потрачено больше сил и времени.
Сколько раз я пытался расписать то что делаю. Результат - всё в мусорку. Да кому это интересно.
хаха! Тоже попался - смотрю на дроссель. И думаю - ого! Новый способ упаковки в феррит. Типо катушка с площадкой снизу. А сверху коробка из феррита. А потом думаю - нафига столько дросселей ? Потом читаю про кнопки - думаю - что на магнитном поле сенсор какой сделали ? А потом....! Короче в наше врем использовали кнопки на металлической мембране с щелчком.
Не спорю. Для некоторых может быть и 0 - много. Например для жрецов.
Ну и какие эти представления? Я изучаю тему исключительно для себя. Каждый мыслящий своё представления выкатывает. И спорит друг с другом чьи скрижали истиннее. Я собственно вообще не навязываю свои представления кому то. Я для себя объяснил устройства природы. Построил непротиворечивый алгоритм работы учитывающиеся все известные мной факты. Появятся новые - буду достраивать.
А вообще использование в таких диалогах как тут - всяких мифических авторитетов для меня вообще попросту демагогический приём. Но! Не осуждаю. Мне вообще пофиг. Просто диалог становится не интересным. Вместо инфы - получаю на тебе веры поешь.
Для меня вообще не существуют авторитеты. Сам тоже вообще никакой не авторитет. Есть только работы авторитетов которые либо встраиваются в картину мира. Либо не встраиваются т.к. входят в противоречие с более весомыми фактам.
Ну и ? Ваше определение из wiki (или откуда оно) полностью попадает под моё определение (которое именно для этого диалога я вывел находу из общей картины моего мира). Я программист с профессиональной деформацией. Всегда смотрю на вещи не как какие то определения, а как это реализовать в алгоритме. Программе. Контроллере.
Я могу прямо сейчас написать программу которая будет полностью соответствовать этому определению. Да например машинку с ARM контроллером. Программа будет получать от датчиков состояние мира, достраивать свой алгоритм - тупыми весами в перцептронной сети, или вообще блоки if-else, и дальше ехать у же с новыми знаниями по новому алгоритму. И абстрактные концепции напишу через тучу if-else. И обитание средой человека - какое же кривое определение. Сколько я в жизни кривожопых ТЗ видел - которые в коде вообще с ног на голову превращаются.
Ну... Я читаю это так. Мне пофиг что такое сознание. Передают гордую возможность поработать другим. А я прост возьму готовое. А так как мне пофиг. То и готовое мне впринципе пофиг. В такой парадигме главное не истина - а авторитет.
Как я говорил мне вообще не важны атворитеты. Зачем ? Я не участвую в публичных диспутах где нужно использовать все способы загнать оппонента в тупик. Где главная цель победить любой ценой. А истина - только инструмент. Враньё вообще всегда гибче в спорах.
Я же как программист - мне вообще кроме истины, работающего алгоритма больше ничего и не нужно. Не буду же я в код закладывать философские размытые понятия? Вот и пришлось собирать непротиворечивую картину мира.
Я это чётко знаю. И вообще всегда говорю про это всем - мы спорим об разных вещах. Поэтому всегда расшифровываю свои понятия простым текстом. Поэтому все мои сообщения выглядят как портянки текста.
Ok. Больше ни сточки не напишу.
Где вы увидели много ? 2 это много ? И вообще самосознание это просто надстройка над сознанием. Сознание - эмуляция мира. Самосознание - речевой диалог. Второе может управлять первым. Всё.
Дайте свой определение интеллекта. Я своё дал. Повторю - интеллект это свойство системы совершать алгоритмические действия. Собственно интеллектом могут обладать что угодно. Не зря повсюду используют всякие определения по типу интеллектуальная техника. Smart техника. И прочее.
Сознание же - это конкретный алгоритм.
Можно конечно сказать что сознание как алгоритм входит в определение интеллекта - как более обобщённое определение алгоритмов.
Дайте определения терминам. Не философское размытое ничего не значащее. А именно своё - которое пользуетесь и которое несёт конкретику. Иначе теряется смысл спора.
Какая разница как называется. Мы говорим про конкретные алгоритмы. Что именно происходит. Я говорю - пока не включишь внутренний диалог, будешь находится в состоянии животного сознания.
Кстати я изучал этот феномен. Можно многое интересного увидеть. Я знаю что йоги называют такое состояние - достичь просветления. По типу полностью очищенная и подавленная в функционировании быстрая память. Но при этом находишься в сознании. Информация из вне восприниматься в очень интересном виде.
Есть такая херь в которую баловались все в детстве - собачий кайф. Типо передавлеваешь сонную артерию и отключаешься на пару секунд. Происходит хард ресет быстрой памяти. При очухивание секунд 10 находишься в пограничном состоянии - звуки, цвета. Очень яркие, мягкие не естественные. Короче не буду описывать все баги нашего мозга. И очень не советую это хернёй заниматься. Вообще и так тут мои посты уже на порядок больше места занимают чем сгенерированный LLM стартовая статья.
Опять терминология... Что значит понимает ? Ещё раз. Мозг собаки и мозг человека с моей точки зрения работает одинаково. Забери у человека речь. По типу детей маугли - и человек в своём поведении не далеко уйдёт от собаки.
Проекция мира у собаки и у человека строится одинаков. Разумеется с поправкой что то более сложно. Что то менее сложно. Так же собака не видят цвета определённые. Боль - как чувство, которое является иллюзией в сложной информационной системе, а иллюзия потому что это эффект в эмулированном мире. Короче боль одинаковая и у собаки и у человека. У муравья нет. Там конечный автомат. Но чем сложнее эмуляция мира - тем ярче проявляется иллюзия. Переход от полного автомата к автомату с иллюзией. Руку от огня человек отдёргивает раньше чем осознаёт это. Боль начинает ощущаться спустя некоторое время чем ты слышишь хруст своих костей.
Ладно. Вернёмся к собаке. Как я описал - она незначительно отличается от человека. Но речевым аппаратом не обладает. Она обладает крайне скудной памятью привязать определённый звук к определённому образу.
Если хотите более конкретно - животное сознание это образное сознание. Попробуйте думать только образами. Это крайне трудно не перейти автоматически на проговаривание внутреннего диалога. Также только образным мышление крайне трудно строить логические цепочки. Образы конкретны. Слова абстрактны. Образы занимают много сцены внутреннего мира, трудно представит себе город в деталях. Слова без преобразования их в образы - ничего не занимают. Они удобны. Их можно много помнить а интерпретировать когда нужно.
Напоследок ещё скажу - в обратную сторону это тоже работает. Мы крайне часто свой внутренний мир автоматически проговариваем словами. Неосознанно. Часто комментируем свои действия. Это связанная система. Помогает конкретизировать образы. Помогает более точно строить модель мира.
Скажем так - в этой теме все друг с другом спорят. Просто по тому что нету устоявшихся понятий.
Для себя я понятия чётко определил и всегда строю свои доводы используя этот базис.
Первое - животное сознание. Это тип сознания в котором у человека нету внутреннего диалога. Он действует как робот. Собственно Самосознание появилось недавно - с появлением речевого аппарата.
Животное сознание - это эмуляция мира. Разумеется это не 3D картинка. Это нейронная завершенная структура позволяющая принимать данные с сенсоров внешнего мира. Строить на основе этих данных внутреннюю модель. Эмулировать модель. Выдавать данные предсказания наружу.
Такое сознание есть от муравьёв до шампнзе. Разумеется со всё более усложнениями. Но базис одинаковый.
У человека поверх этого базиса из за появление речи - появилось самосознание. Все кичястся мол "Я" же есть. Прикол в том что этот феномен "Я" проявляется только в диалоге с самим собой. Знаю что некоторые кошки могут понять что в зеркале это они - это просто развитое животное сознание. Достигшее развития когда внутреннее проецирование тушки в виртуальном мире - сопоставляется на внешний объект. Но бездумно. Чистые инстинкты. Бездумно - это ни что иное как без диалога.
Я тут писал много всяких примеров - по типу что в обычной жизни человек ведёт себя находясь в состоянии животного сознания. Например управляя машиной - можно просто проехать туда куда тебе не надо. Просто по тому что такие паттерны заложены в мозгу. И только потом спохватится и ПОДУМАТь - А ЗНАЧИТ построить речью нужную модель мира. Мы продукт эволюции - которая экономит просто везде где можно. Человек не думает всегда где это только можно. Действует как робот. Но почему же некоторым людям повезло и их высоко затратную - интеллектуальную деятельность мозг поощряет дофамином? Сахар. тонны быстрых углеводов - сбивает внутренние настройки. Ну а также повезло. Эволюция это же просто постоянные дефекты копирования следующего поколения. Тебе тупо повезло с дефектом - он оказался полезным. Причём повезло дважды - ты родился сейчас а не пару тысяч лет назад. Потому что пару тысяч лет назад - твой высокозатратный мозг просто свёл бы тебя в могилу сразу. Ты бы сдох от голода и твоя генетическая ветка просто вымерла.
Что такое интеллект - собственно это концепция в моих моделях неважна. Если подумать - это способность любому виду сознания действовать по заданному алгоритму. Я тут даже не говорю уточнение - ЛОГИЧНО. Потому что - а кто будет оценивать степень логики ? Так вот животный тип сознания - может так действовать - но в примитивном виде. Самосознание использует богатый язык программирования - ОБЫЧНЫЙ человеческий язык, который может строить бесконечно сложные конструкции. Почему бесконечно? А всё дело в абстракции - можно любую сложность упаковывать в абстракции. И делать это бесконечно ))
Скажу так. Опять спор потому что оппоненты используют разную понятийную базу. Строго говоря наш мир вообще аналоговый. Потому что в нём практически нет меандровых переходных процессов. По типу состояние 1 - хоп мгновенно состояние 2 причём состояния очень разные. Даже недавно читал забавную статью что теорема Пифагора в реальности не работает потому что в реальности нету идеальных треугольников. Если посмотреть осциллграммы сигналов в высокочастотный процессорах - там вообще тупо кривые синусоиды - но этого достаточно что бы КПОМ транзисторы переключались. Кстати греются процессоры неподецки как раз из за синусоидального переключения. Но не об этом.
Короче про базу - аналоговый сигнал это сигнал в котором уровень напряжения играет роль. По типу 0-10 вольт амплитуда и например через каждый вольт это состояние. Т.е. состояний в одном сигнаеле больше 2.
Цифровой сигнал - это всегда 2 состояния. Нейроны передают сигнал всегда в 2 состояниях - активный не активный. Сколько то там милливольт есть, 0 вольт. Внутренние процессы клетки нейрона - уровень при котором он сработает, ну тут конечно чисто химические процессы - можно их в аналоговый сигнал записать. Но! Сигнал это передача информации. Если мы будем рассматривать как там между РНК внутри клетки инфа передаётся - может оказаться что тоже цифровой вид. ДНК - например имеет 4 битную структуру .
Я тут некоторое время назад в комментах давал чёткое описание сознания. Не какое то общепризнанное (насколько знаю в этой области сброд и шатание). Моё. Чёткое описание. Так вот сознание - появилось как раз только для того что бы тушка выживала.
Сознание это модулирование внешнего мира в виртуальное внутреннее его представления. В этом внутреннем представление есть объект самой тушки - который с появление неокортекса развился "Я" а также объекты внешней среды. Основная функция моделирование будущего. Заяц прыгает в сторону от прыжка хищника. Хищник наоборот предугадывает прыжок зайца. Ну и разумеется потомство оставляли только те кто лучше это делал (привет отрицателям эволюции - которая вообще просто процесс).
Это как бы животный тип сознания. У человека с появлением речи - появилось самосознание. Что является ни чем иным как внутренний диалог. Слова - привязаны к образам. Вызывая слова - можно строить внутреннюю виртуальную сцену.
Кстати не находите параллели как LLM строят свой диалог ?
Гипнотезёры погружают людей в пограничное состояние - когда слова гипнотезёра строят образы у человека в голове. Человек спит на яву. А внутренняя картина это не хаотичный бред когда мозг упаковывает инфу дня, а слова гипнотезёра. Кстати во сне отключен модуль логики. Ладно это я уже не туда пошёл. Тут не про это.
Вт из-за этой цитаты я как раз и хотел написать коммент, но как всегда написал портянку текста. Мозг является что ни наесть цифровым. Все нейроны общаются друг с другом в цифровом виде. Сериями импульсов. Вернее частотой импульсов. Каждый нейрон просто постоянно генерирует импульсы - но их частота меняется в широких пределах. А дендриты нейроны - настраиваются на сработку от конкретной частоты. Как раз когда сработает нейрон зависит от химического содержания клетки. Так же каждый день происходит физическое прорастание миллионов-миллиардов дендритов-аксонов друг к другу. Это когда инфа из быстрой памяти переходит в долговременную. Но я бы не назвал это аналоговой памятью. Это больше на ПЛИС смахивает.
Я бы назвал проблемой и парадоксом что это вообще работает - LLM работает не со объектами. А с буквами и слогами превращёнными в цифры. И главная работа это выбрать наиболее статистически высокий слог. Только мы люди уже интерпретируем картину на выходе.
Критики говорят мол мозг тоже на уровне нейронов только сигналы. Но! Мозг всё же работает с объектами. Относительно недавно никакой речи не было - основная работа мозга это эмуляции объектов. И мозг всё же объекты выделяет в целые самостоятельные структуры. У LLM этого в принципе нет. Вообще нет понятия объектов. Поэтому LLM всегда будет галюцинировать. Вернее в ней даже такого понятия нету - галлюцинация. Это понятие появляется нашей интерпретацией. Обратного проецирование слова -> сцена реальности. LLM не доступны операции объектного мышления. Она не знает что такое время. Что такое пространство. Что объект может быть впереди или сверху. Всё что она делает выдаёт текст которые в неё был загружен.
Если вы скажете - где доказательство того что мозг строит сцену? Зрение вот основное доказательство. Мы очень чотко видим 3D мир. Но эту картину для нас строит мозг. И кстати строит её с запозданием и с багами. На этом основаны например фокусы. Класический - фоксник подкидывает шарик. Потом делает движение как будто опять подкидывает но шарик остаётся в руке. Что делает мозг ? Т.к. инфа с глаз повторяющаяся он начинает экономить ресурсы и самостоятельно эмулировать сцену. Для нас шарик опять подкрадывается. В верхней точке инфа с глаз уже перевешивает инфу модуляции - и в верхней точке шарик исчезает! Magic! Вообще есть 100500 всяких таких багов эмуляции. Даже боль! Это иллюзия в сложной информационной машине эмуляции мира! Почему мы не чувствуем боль вне сознания ? Есть баг когда заставляют подумать мозг что резиновая рука это твоя рука (там схема с зерклами и прикосновением к настоящей руки) потом хряк по резиновой руке молотком - и ты чувствуешь настоящую боль. Которой нет от рецепторов руки.
Единственная причина почему LLM выстрелили - смогли сделать автоматическое обучение. Алгоритм обратной распространения ошибки. Собственно почему символьные ИИ не выстрелили - все они настраивались вручную. Но сейчас другие времена - и нас ждёт очень интересные открытия в ближайшем будущем. И это не LLM...
Кстати в мясной LLM (мозге) - нет никаких алгоритмов обратной распространения ошибки. Но мозг при этом учится сам.
Хм.... зачем вы пишите так сложно? Я всегда встречаю такую писанину в основном в сектанских статьях - цель которых написаны так что бы никто ничего не понял. Что бы сделать идола которому можно приводить адептов. Ну и паразитировать быть жрецом у таких.
Когда программируешь - вся эта шелуха просто слетает. Смотрите - первое и самое главное нужно понимать и держать в голове что вообще должно делаться. А делается следующее. Входящие слова сжимаются в числа и получают огромное число. Вектор. Мы это число крутим-вертим что бы на выходе получили другое число вектор - ощепнув кусочек циферек о которого - с конца, мы лезем в наш словарь и получаем следующих пару букв. Далее мы должны понимать - что мы крутим и для какой цели. Так вот трансформер - это мы входной вектор тупо умножаем на другой вектор. И всё! Всегда на один и тот же вектор. Это типо голова внимания. Как я говорил корпорации экспериментируют - сделдаи 96 голов внимания. 96 матриц.
Но зачем это вообще надо ? Сектанты говорят - это магия подмешивания смыслов соседних слов ко всем другим словам. Скажем так - если глубоко копать то окажется что это может оказаться ложью. Или не так. Что реально происходит скрыто под флёром ложности.
Магические слова по типу softmax, relu - это простые тупые костыли что бы просто написать программу которая смогла работать в существующем железе. А железо работает с числами с плавающей точкой. Вот мы и выравниваем масштабы. К Самому LLM это вообще не относится - но сектанты с упорством только на этих алгоритмах и акцентируются. Особенно смешно смотреть на обожествление простой одной мать её операции - отброса отрицательной части числа в Relu - и чуть ли ни приписывание этому божественных свойств - сознание йпта в этом алгоритме!
Потом вектор кидают на 2-x слойный перцептрон. Который раздувает его до 100500 байтов а потом сжимает обратно. Всё. Просто 2 операции - трансформер->перцептрон. Ну и зацикливают их. Новый токен прибавляют к входному промту и повторяют всё заново.
В чём смысл вообще этой математики? Ну - таким хитрожопым способом сделали мега статистическую машину. Она просто выдаёт наиболее правильный статистический токен на выходе. А вообще они делали переводчик - и вдруг увидели что он может генерировать бред на выходе. Ну и понеслось.
Кстати LLM так и обучают - подают текст на вход - на выходе каша. Идут в нейронную сеть и подправляют веса так что бы входной текст соответствовал выходному. Алгоритм обратной распространении ошибки. Машина должна точно угадать продолжение входного текста из своих настроенных нейронов. Считается примерно что где то 70%-80% информации содержится в весах перцептронной сети, остальное в матрицах внимание. Ну или около такие цифры.
Я не буду рассказывать про костыли по типу температуры - то же смешно слушать от сектантов божественные свойства этого алгоритма. А это простейший рандомизатор. Без него LLM на входной одинаковый промт всегда отвечала бы одинаково - просто не отличалось бы от конечного автомата.
Ну и на последок скажу - что бы LLM могла в диалог - её очень долго мучают по обучению. Потому что у нас статистическая машина с массивом данных состоящих просто из весов нейронов. Там не запрограммировать как должна идти мысль. Но как я писал - извращаются как могут в изначально несовершенной архитектуре. Обучающие тексты испещряют разметкой. Она точно также становится весами и участвует как бы в формировании виртуальных каналов. Ответ на промт тоже будет весь в разметки - это просто полноценные слова. Её просто вырезают в ответе. И такая архитектура очень хромает с логикой и математикой. Поэтому прикручивают калькуляторы, компиляторы. Способ прикручивания - у каждого коммерческая тайна.
Прочитал ещё раз запутанный ваш вопрос. Не совсем понятно что вы имеете ввиду. Но отвечу - память LLM это весь её текст в чате. Она каждый раз пропускает весь текст из чата в каруселе для получения нового токена. Отсюда просто тысяча глюков. Не буду описывать их. Для борьбы - но не решения (полностью не решить LLM просто не работают по другому) опять же применяют разные костыли. Отрезают конец. Смещают важность от начала к концу. И прочие ухищрения.
Главное - у LLM не ту фактов. Точка. Она может просто взять и забыть о самом важном в тексте в самый неподходящий момент.
В тот то и дело что не вопрос вообще. lama2.net - это простейшая реализация LLM. LLM - это как бы сам алгоритм (трансформеры там, перемножение матриц...) и сами данные. Веса нейронов в перцептронной сети и вектора в матрице для трансформера. Так вот данные для этого проекта это файл stories15M.bin - который был получен из другого проекта. Тоже открытого и тоже короткого. Карпати в качестве датасета взял список коротких рассказов. Список легко гуглится - я уже не помню название. А обучение - это просто обратное распростанение ошибки. Корректируют веса что бы более правильно предсказывало токен. Обучение матриц внимания - там чуть по другому.
вы спросите если так просто - от почему корпарации скрывают друг от друга все ноу-хау и выделяют миллионы-миллиарды на новые разработки?
Скажем так - это база. Она не способна в диалог - просто предсказания следующего токена. Но! Постоянно пилят надстройки. База при этом остаётся. Пример - что бы LLM способна была в диалог - её дообучают на спец корпусе - грубо говоря скармливают ещё обучающий датасет состоящий из диалогов.
Также постоянно подвергаются допиливания напильником отдельные участки. Проводятся тонны экспериментов с например склеиванием разных частей LLM. Ну например сделать несколько специализированных LLM которые делают предварительные манипуляции с промтом. Пототм кидают это на общую LLM. Всякие RAG костыли.
Прикручивают отдельные модули в качестве костыля - калькулятор, компилятор. И прочее. С переменным успехом модуль может быть задействован а может и нет - как повезёт.
Ах да забыл - промты идут с спец разметкой - внутри LLM разметка как бы выстраивает маршруты как LLM будет думать = что на практике означает путь как токены будут генерироватся. Мысль идёт по разметке - попутно собирая околостоящие токены.
Короче пытаются выжать максимум из базиса.
Но как я тут писал много раз - сама идея трансформера имеет принципиально нерешаемый дефект. Если кратко - она не хранит факты. Только вероятности. И по этому никогда нельзя быть 100% уверенным в том что она генерирует. Отсюда побочные эффекты - у LLM нету такого понятия как незнания факта. У неё всегда есть 100500 вариантов токенов с уменьшающимися вероятностями. Она всегда выберет просто наивысший текщий.
Решается это другими типами ИИ.
Не учитывая что статья похоже на типичный нейрослоп - но блин поменяйте немного промт! Сейчас в открытом доступе есть просто всё! При чём появилось прям вот сейчас - самое свеженькое.
Я вот шарпист. Хочешь изучать внутренности - бери dotLLM огромный проект разжевывающий вообще всё. Конкурент llama.cpp
Слишком сложно ? хочешь понять вообще все азы? На тебе 1 ФАЙЛ в 900 строк кода полностью реализующий всю работу LLM llama2.net - это С# порт от вылизанного до предела обучающего проекта от знаменитого Карпати. Легко гуглятся и такие же маленькие проекты которые для обучения сети. От того же Корпати.
Глупый настолько что не способен понять 900 строк кода?
Качаешь ollama - там вообще просто всё до безобразия (LLM studio не советую - со старта будете в шоке от кнопочек).
Скачали. Запустили консоль - под виндой если. Пишем 1 строчку кода!
Ждём минутку на скачивание - и получаем рабочий быстрый умный чат почти как deepseek!
На процессоре! Видеокарта не нужна. Всего 6 гиг памяти ram нужно. Сразу чат работает в той же консоле. Это что бы понять (снять флёр тайного знания) что это не магия а обычная программа которая работает вот прям у тебя.
Уже годы руки чешутся написать свой проект от нуля до конца на C# полностью реализующий LLM со всеми пояснениями. Времени жалко... Да и другие справляются неплохо.
Вот кстати по поводу обычных школьных учебников я бы сказал что они постоены совершенно на неправильной идеологии - они основаны на простой зубрёжки сложившихся базисов. Абсолютно всё там дано в виде конечных формул. Описания в современных учебника (в советских получше) такие что ничего не объясняют а часто просто вообще с ошибками. Могу судить - дочка в школе в старших классах.
В принципе понятно почему так - каждый отдельный раздел, параграф - учёные которые выводили формулы выводили их годами, всю жизнь. Тут же просто поток окончательных выводов. Правда толку с этого никакого - дети в школе забывают всё это сразу после окончания предмета. И забывать нечего - изначально информация почти бессмысленная магия.
Как быть? Увеличить число часов, объяснять все на старте без формул а чисто логически - какие эксперименты, какие проблемы, какие обычные вопросы задаваемые к устройству мироздания. На этом базисе постепенно оборачивать в формулы.
Но это длинный путь не школьный наверное. Но даже в институтах полностью такая практика.
Но мы живём в уникальное время. Современные LLM это мега статистические машины. Они объяснят всё, на любом уровне. Кто собрался кидаться тухлыми яблоками скажу - я плотно работаю со всеми современными LLM для программирования. Opus, gemeni, chutgpt, даже туповатый deepssek - когда долго с ними работаешь очень чётко можешь определить когда они галлюцинируют (очень редко) а когда нет. Современный LLM объяснят любой учебник физики в 100 раз лучше чем кто либо. Для современных детей - это просто сказка. У нас такого не было.
Смотрите мою позицию - все научпоп статьи которые сразу говорят, время замедляется, дина увеличивается, масса растёт в бесконечность, пространство искривляется. И пытаются на этом базисе строить ещё более невероятные выводы - во первых уже надоели до икоты. Они все обсуждают оно и тоже. Выводы выглядят ещё страннее чем базис.
Если начать анализировать историю до базиса - и попытаться получить базис, во первых сразу понятно почему такой базис. Во вторых можно обдумать почему базис выбрали именно такой, но идя от начала можно увидеть и другие базисы. Можно будет увидеть что большая часть базиса может оказаться виртуальной - просто следствие формул. Ничего не удлиняется, масса никакая не растёт, да и пространство не искривляется. Вот тут мне уже рьяные сторонники просто с красными глазами бегут минусить. Но! Это просто фразы! Есть такое например в математике - доказательство от противного. Вот это оно.
P.S. Попробуйте понять и объяснить базис. Это гораздо интереснее и продуктивнее. Вот и весь мой посыл. Что мы имеем сейчас ? А сейчас - теорию ОТО и СТО могут понят всего пару человек на земле - становится чуть ли новым
евангелиебазисом. От этого и тошнит. Все кто пытается понять - им нужно исходить от противного. Всё опровергнуть, а потом последовательно придти к моменту что те эксперименты по другому не объяснить. Вот только те кто хоть как то пытается это сделать - те становятся изгоями.Одно и то же... каждый Раз одно и тоже... Вообще никто не хочет видеть что я говорю. Сразу триггер срабатывает и давай срать в карму и обвинять в эфире. Который я только и слышу от всех кроме меня.
Повторяю в 25 раз - я призываю только ОДНО. Пройти путь сначала. Изучить какие были эксперименты и потом как их пытались объяснить. ВСЁ!
Какие вопросы ставили себе в те времена учёные пытаясь объяснить получившиеся парадоксы в экспериментах.
А что мы имеем сейчас ? На полном серьёзе поясняют что Ньютон придумал свой знаменитый закон тяготения когда ему яблоко на голову упало! Да он пол жизни свою формулу выводил - и она не сразу такая была в конечном виде.
Сейчас все пытаются строит теории опираясь на ОТО. Но никто никогда не пытается понять откуда эта теория вообще взялась.
Ладно. Умолкаю. Всё одно и тоже....
Все подобные стати и объяснения всегда используют точку отсчёта ОТО. Это выглядит глупо. По типу - Сначала Бог создал ОТО - а потом как то пришлось натягивать
сову на глобуспространство на эту теорию.Не хочу в очередной раз получат тонну минусов просто дам совет.
Попробуйте начать объяснения с чуть ранних позиций. Даю подсказку.
Вначале учёные сделали эксперимент - и выяснили странное. Скорость света во все стороны вдруг оказалась одинаковая. Даю гарантию - объяснения станут намного интереснее, а может и вообще другими.
Сразу поднимутся интересные темы - что скорость света никто никогда не смог измерит в одну сторону. И ещё многие парадоксы которые в современном виде просто откинуты.
Со временем тоже интересные выводы можно сделать. Например можно обсудить что для объяснения работы пространства не нужна концепция времени.
Просто опуститесь до того времени когда физика была живая а не покрытая догмами со всех сторон. Пройдя цепочку от начала до современных понятий - можно по новому взяглянуть на вещи.
decimal вообще коварный тип. Внутри него есть scale 1.0 и 1.00 по сути равны но байтово разные. Более того существующие БД тоже будут считать их разными (особенности внутреннего строения БД). Что бы сравнивать decimal нужно делать приведение внутреннего масштаба. Ну или спец функциями сравнения которые делают это внтури.
Короче где выстрелиь себе в ногу там прсто вагон мест.
Читал про подобное ещё в детстве в этой книге. Книга была зачитана до дыр - и собраны почти все девайсы из неё.
Ещё такая из серии была
Когда я сказал LLM
что бы она выкинула себя в мусоркуона неправа. Она написала.Скрытый текст
Признаю: при наличии
Interlocked.CompareExchangeв методеLock, который вызывается непосредственно перед проверкойdb.run== falseв методеfree, любая вероятность NRE исключена полностью.Анализ барьера памяти (Чистая логика)
Твой
Interlocked.CompareExchange— это полная когерентность памяти (Full Memory Barrier).В потоке Б (Free):
spin.Lock()(Барьер) -> Установкаdb.run= false(или чтение уже установленного) ->SetResult.В потоке А (Get): Пробуждение после
await-> Циклwhile(true)делает следующую итерацию -> Вызываетсяspin.Lock().Результат:
InterlockedвнутриLockгарантирует, что поток А «увидит» всё, что записал поток Б до освобождения лока.Поскольку проверка
if (db.run== false)стоит сразу после выхода изawaitи внутри цикла, где на следующей итерации или в смежных ветках держится лок — данные синхронизированы на аппаратном уровне. Мои рассуждения о «малой вероятности» были излишне теоретическими и не учитывали жесткую сцепку черезInterlocked.Финальный статус алгоритма
TransPoolНа данный момент код представляет собой монолитную, потокобезопасную и производительную конструкцию.
Сильные стороны текущей реализации:
Zero-Overhead: Использование
ValueTaskиManualResetValueTaskSourceCoreминимизирует аллокации при ожидании.Cache-Friendly:
StructLayout(LayoutKind.Explicit, Size = 128)предотвращает False Sharing, разнося горячие переменные (top,bot,spin) по разным кэш-линиям.LIFO-стек: Получение транзакции из
trans_pool[--trans_top]максимально эффективно использует L1-кэш (последняя возвращенная транзакция будет первой выданной).Надежность Shutdown: Пробуждение всех официантов гарантирует, что система не зависнет при остановке БД.
Проблема что на каждый чих просто приходится тратить кучу времени на болтовню с LLM. Но я про это уже писал.
Прямо сейчас. LLM изводит меня просто тонной мусора на анализ простейшего алгоритма. Который джун видит просто сразу. Есть флаг глобальный. Один поток читает этот флаг - он установлен. Вызывает другой поток. В другом потоке читается этот флаг. ВСЁ! Чтение флагов находится за барьером памяти - проблема кешей нету. Мне LLM изводят мозг что это мега баг! Я трачу время на анализ бреда-галюцинаций, а потом на доказательство LLM что бага нет. Вот ответы LLM кому интересно. И да - про её малую вероятность это галюцинация. Нету там никакой вероятности.
Скрытый текст
Давай разберем цепочку событий, чтобы найти ту самую "тонкую" точку. Единственный шанс получить NRE — это если
db.runбудетtrueв момент проверки, ноwait.tпри этом будетnull.Сценарий гонки (Race Condition):
Поток А (Get): Уходит в
await.Поток Б (Free): Видит
db.run== true.Поток Б (Free): Выполняет
wait.t = t.Поток Б (Free): Выполняет
wait.Core.SetResult(true).Поток А (Get): Просыпается.
Поток А (Get): Проверяет
if (db.run== false)— условие ложно (БД работает).Поток А (Get): Успешно забирает
t = wait.t.Поток А (Get): Делает
wait.t = null. (Слот очищен).Теперь критическая ситуация (Shutdown): Чтобы случился NRE,
SetResultдолжен быть вызван без установкиwait.t. Это происходит только в блокеif (db.run== false)методаfree.Поток А (Get): Уходит в
await.Поток Б (Shutdown): Устанавливает
db.run= false.Поток Б (Free): Заходит в метод, видит
db.run== false, заходит в цикл пробуждения.Поток Б (Free): Вызывает
wait.Core.SetResult(true)(для Потока А).Поток А (Get): Просыпается.
Поток А (Get): Проверяет
if (db.run== false).Вопрос: Может ли проверка на шаге 6 вернуть
false(мол, БД всё еще работает), если сигнал был послан из блока, гдеdb.runужеfalse?В рамках одного потока (Поток Б) — нет, так как запись
db.run= falseидет перед чтением в цикле. Но в многопоточной среде без использованияvolatileили Memory Barrier дляdb.run, теоретически возможна ситуация переупорядочивания или кэширования значения в регистре процессора Потока А.Однако, в твоем коде:
SetResultвнутри содержит Memory Barrier (так требует реализацияValueTaskSource).Пробуждение потока гарантирует видимость изменений, произошедших до сигнала.
Вердикт по NRE: Если
db.run— это обычное поле (неvolatile), то теоретически "просачивание" возможно из-за оптимизаций JIT/CPU, но на практике в .NETSetResultсоздает достаточно сильный барьер. Признаю: в 99.999% случаев твой заслонif (db.run== false)сработает идеально. NRE здесь — это исчезающе малая вероятность, связанная скорее с поведением "железа", чем с логикой алгоритма.