А сравнивали ли вы ваш подход с генерацией эмбеддингов для индекса из строк перемену длины: когда берутся предложения, абзацы, страницы, и индекс строится для каждого из них, а не просто для каждого предложения/абзаца? Основную заявленную вами проблему это должно решать, при этом вычислительно брать намного проще.
А учитывая, что эмбеддинг, порожденный моделью, и так есть для каждого токена, построить усредненный эмбеддинг по каждому 1, 2, 3, 4, 6, 8, 12, 16, ... токенов и поместить их все в единый индекс должно быть крайне просто.
И вообще, не хватает каких-то численных оценок вашего изобретения. Скажем, взять сберквад или любой другой QA датасет и прогнать по нему базовый метод (обычный индекс по абзацам), метод, предложенный мной, и ваш -- должно быть делом несложным.
Ну, может они и воспроизводимы, например, можно собрать топик, в котором будет слово "её". Однозначно воспроизводимо. Но полезен ли кому-то такой топик? Основная проблема рандомных топиков -- их неинтерпретируемость.
Я конечно не настоящий сварщик (сборкой компьютеров занимаюсь совершенно любительски), но меня тоже смущает низкая эффективность всего в 5х относительно собственного потребления, хотя и радует поток воздуха. Обычный кулер 100-120мм для отвода около 100-150 Вт тепла потребляет 2 Ватта вроде бы, 160мА*12В=2Вт, то есть получается эффективность в 50х. (Кулеры на подшипниках скольжения на 120мм кстати тоже бывают 24 дБ на полной скорости). Ноутбучный кулер -- всё делим на 5, пропорция по мощности остаётся. А пыль -- можно на боковой стенке ноутбука сделать очень мелкую решётку от пыли, она даст сопротивление воздуха, но т.к. кулер очень мощный в плане давления воздуха, то он справится.
PMI увы тоже работает не идеально, потому что в идеале для выделения фраз нужно считать статистику с учётом синонимов. Поэтому скомбинировать и будут неплохие рекомендации.
1) Видимо, всё же фразу, а не предложение. Потому что какой родительный падеж у предложения "Я вчера мыл кота"? 2) Никак, потому что вам нужно знать, как слова во фразе друг от друга зависят и какие у них модели подчинения. А для этого нужно понимать предложение. Есть синтаксические парсеры, которые строят такую модель, хотя и не очень точно. Берёте такой парсер, понимаете, падеж каких слов нужно поменять, а pymorphy уже этим занимается. 3) Или ещё есть современный вариант: натравливаете GPT-3 / ChatGPT, и (часто) получаете правильный ответ.
Вообще, это стандартная задача NLP, и должна решаться в 5-10 строк. Проверим:
Чтобы перебрать все биграммы, нужно просто написать
for a, b in zip(words, words[1:]):
p = a + '_' + b
Аналогично, если хотите все биграммы с пропуском в одно слово, то
for a, b in zip(words, words[2:]):
p = a + '^' + b
А дальше используем Counter из стандартной библиотеки
from collections import Counter
import re
c = Counter()
words = re.findall('\w+', text.lower())
for a, b in zip(words, words[1:]):
c[a+' '+b] += 1
for a, b in zip(words, words[2:]):
c[a+' ... '+b] += 1
import pprint
pprint.pprint(c.most_common(20)) # выведем красиво
Эх, немного не уложился в 5 строк, но в 10 строк уложился ;)
А вообще, есть такое понятие Wiki: PMI , которое гораздо лучше выделит подобные выражения. Просто нужно будет посчитать ещё униграммы и сделать рескоринг для биграмм.
Вот потом после таких опросов и получается непонятно что. Требования к железке, чтобы работать с неё в путешествии, в офисе и дома -- разные! В офис нужен нормальный мощный стационарный компьютер с 3 мониторами и отдельной беспроводной клавиатурой, которую можно двигать, а в дорогу -- лёгкий мощный но долгоживущий ноутбук с небольшим ярким дисплеем, в основном, для офисного и мультимедийного применения, потому что компилировать, запускать и отлаживать код, как-либо работающий с пользовательскими интерфейсами на ноутбуке (и фронтенд, и бэкенд) -- ну так себе удовольствие.
А какой у вас доверительный интервал, чтобы понять, что 0.629 лучше, чем 0.613 ? Может, у вас оценки ±5%? Тогда вы не отличите одно от другого, как вам и показывает MAE.
В общем, вы просто не знаете мат статистику, и с умным видом сравниваете случайные величины как обычные числа.
Кроме того (и вот тут вы должны испытывать особый стыд), ROC AUC определяет кривую для всех значений precision и recall, а на практике, вы будете использовать только одно конкретное значение на этой кривой, выбрав threshold. Правильно сравнить две кривые по одному числу нельзя, поэтому вы берёте какую-то функцию от этих кривых, которая даёт число для каждой кривой. И естественно, можно найти одну функцию, по которой одна меньше другой, и функцию, по которой всё наоборот. Например, если зафиксировать TPR = 0.5 и TPR=0.8 здесь, то получим разные ответы о том, какая кривая лучше (считаем, что линии разного цвета -- это скоры разных моделей).
Алексей, кажется, вас спрашивают другое:
А если обобщить утверждение Сёрла с «перечисления правил», как в 192х-195х понимали компьютерный интеллект (через онтологии), до просто «современной компьютерной программы, с памятью и графическими ускорителями», тогда всё равно будет комбинаторный взрыв и те же проблемы?
Так контекст и есть прототип и границы вокруг прототипа. Только записанные не в виде текста, чтобы можно было 1000 границ сразу написать или даже миллион. Правда передать их кому-то так не получится. Ведь у определения есть ещё одна функция — быстрой передачи данных, именно поэтому мы стремимся к его компактности.
>В геометрии у линии нет определения
Тут нужно объяснить, почему мы не считаем возможными текстовые определения через другие более сложные или наоборот более простые сущности (точка, пространство, направление, луч). И почему для определения через объём понятия считаем такое же использование других сущностей возможным.
Логики в этом нет, поэтому так и хочется спросить, нет ли здесь снобизма :)
> Я показываю, что контекст можно использовать не только для распознавания с учетом контекста (важно что увидели), а и для собственно для распознавания (важно откуда увидели).
Да, но я как раз и не понимаю, кому и зачем важно это «откуда увидели». И зачем про это говорить.
А вторая гипотеза, которая ставится под сомнение — широкий перебор *контекстов*. Большой набор фильтров, которые ловят какие-то корреляции между сигналами и контекстами — это нормально. А вот большой набор фильтров, которые изучают один и тот же сигнал в большом числе контекстов — это опять же кому нужно? Вот возьмём словарь биграмм слов с частотностью > 1e-9 (..., «и вот», «зелёный кедр», «он бриллиант», «весёлый клоун», «был клад», ...). Такой словарь запомнить реально, и человек это делает, но вот хранить второе слово в виде перебора из миллиона вариантов… прошлых слов? следующих ожидаемых слов? когда реально эти контексты будут встречаться лишь сотни и тысячи раз за жизнь и контекстов на слово будет всего несколько десятков или сотен штук — очень странная идея.
Зачем нужны миллионы контекстов на каждое слово?
>В нейрофизиологии слово «нейрон бабушки» ругательное. То что по групповой активности можно делать определенные заключения говорит о том, что есть «код бабушки», который возникает на этих нейронах.
Потому что конечно не один нейрон, за исключением момента движения мышц — тогда конкретной мышцей управляет один нервный узел, куда идёт сигнал от конкретных моторных нейронов. А вот когда говорим про ИНС — там понятно это модельные нейроны, которые могут соответствовать десяткам, сотням и тысячам реальных.
Ну и тогда всё же не код бабушки, а некая активность нейронов бабушки — см. видео по ссылке, что я дал выше: neuralink.com/blog
Был бы код, был бы и один нейрон (или последовательность нейронов), что активировалась бы каждый раз. (Кстати, тут возникает вопрос: а сколько нейронов управляет одной мышцей и как именно они друг с другом объединяются для управления?)
1) Есть хороший термин — «объём понятия». Объём понятия — это совокупность всех объектов, которые считаются заданными данным понятием, описываются им. То есть, смысл понятия — это объём понятия, а определение — это попытка этот объём задать через какие-то ограничительные линии и прототипы. При этом есть понятия объективно (однозначно) понимаемые через определения (например, «дифференциируемость» или «линия»), а есть те, где объём понятий и границы настолько зыбки, что их никак не свести к определению (например, «любовь»).
2) контекст, конечно, важен, но в общем виде распознавание с учётом контекста в нейросетях сводится всего лишь к заданию функции от двух аргументов: f(X, context). При этом надо понимать, что человек тоже не работает с произвольными контекстами в произвольный момент времени, грубо говоря, что он не пытается понять, видя кошку, с какой именно стороны она кошка: он её не вращает, не обходит со всех сторой (без явной такой цеели). Или распознавание произошло — и тогда мозг не знает, какой был контекст, или же не произошло — и тогда мозг тоже не знает, какой был контекст. В этом смысле ваша теория не права, и тем более, нельзя её рассказывать в таком общем виде, как это делаете вы.
Вы можете придумать контекст (а можете не придумать) — и это уже отдельная мыслительная задачка для мозга по придумыванию этого контекста.
(По моделированию на нейросетях, опять же, знание контекста не является полезной информацией, если нужно, нейросеть начинает его продуцировать, если не нужен — не начинает)
И уж тем более доказывать пользой энигмы пользу от контекстов — совсем натягивание совы на глобус. Хотелось бы всё же реальной пользы контекстов. И кстати, с вами даже Джефф Хокинс несогласен: в своей последней книге он говорит, что в основном нейроны хранят информацию для обработки других зон коры, а не собственные различные контексты. То есть это намного ближе к иерархии из логистических сумматоров, нежели к энигме.
3) Про признаковое описание и «курс нейронных сетей» — опять же, всё немного не так.
Признаковое описание в описанном виде — это лишь один из способов сделать обработку с помощью нейронных сетей, которое в таком виде показывает лишь ущербность, но не нейросетей, а подобного способа обработки — поэтому им и не пользуются на практике.
4) Несмотря на всё это, «нейроны бабушки», несмотря на всё высмеивание непрофессионаламии, действительно существуют у человека, правда, всё же в виде совокупной активации нескольких нейронов, иначе бы нейралинк не работал на шимпанзе и свинье в ролике: neuralink.com/blog. Отдельные нейроны тоже активируются, но лишь в части случаев (не могут работать долго и срабатывать часто), а вот их сумма уже правильно работают (то есть мы поставили логистический нейрон на выходе, чтобы это надёжно работалоо).
Теперь, когда мы из смысла (3) поняли, что кузнецконтекст нам не нужен, мы можем вернуться к изначальным «объёму понятия» и «определению», и оставить за понятием «смысл» изначальное его значение: смысл — это то, что обусловливает употребление или понимание той или иной фразы, а именно, совокупность семантики (общего значения понятия) и прагматики (контекстуально-зависимого значения понятия). Проще говоря, смысл — это значение слова в контексте. И в таком виде, сети типа BERT именно это и получают в своих эмбеддингах (в своих активациях нейронов внутренних слоёв), а значит, компьютер именно что понимает смысл высказывания.
Особенно ярко это демонстрируют CLIP и DAL*E, демонстрируя не только визуальные нейроны бабушки, но и комбинированые текстово-визуальные.
Нет. С точки зрения здравого смысла, в программе есть не только код, который всегда исполняется один раз, но и код, который исполняется лишь при каких-то условиях (в том числе, ноль или очень много раз).
Трасса программы — это поток исполнения. А вы говорили про количество повторов *в коде* программы.
Вы сами запутались уже в своих половинчатых определениях.
Смотрите тривиальный пример:
1) В программе написано 100 раз «если а<100 то b=1». Это 100 повторов.
2) В программе написана процедура if_a: если а<100 то b=1 и потом она вызывается 100 раз в цикле.
1 повтор и 100 повторов — время выполнения одинаковое.
Если же вы говорили не про повторы *в коде*, а про повторы *в трассе*, то сначала объясните, как вы их измеряете, а во вторых, как это связано с вашим изначальным утверждением «Чем более последовательно исполнение конкретной программы, тем больше не повторяющихся последовательностей команд она содержит, значит труднее ее писать». В нём 3 (!) не связанных друг с другом вещи (причём, не связанных даже корреляцией!). Вот из моего примера программа (1) более последовательна, чем (2), при этом содержит больше повторяющихся команд, а писать (1) и (2) одинаково по сложности…
>Тут я имел ввиду, что саму программу придется написать целиком «руками», она не имеет повторяющихся циклов, которые можно написать методом — «Вот это, повторить много раз». А написать в ручную — ну максимум 10 млн строк, не больше. Или есть другой вариант написать небольшой по размеру код, для исполнения которого потребуются очень много команд команд и при этом не будет повторов?
А как связаны количество повторов в коде и скорость исполнения? Никак.
>По поводу мощности: еще пару порядков относительно GPU надеюсь выиграть
Ещё вам и по числу транзисторов надо оптимизироваться, потому что сейчас 20 млрд транзисторов на чип — это потолок.
Упаковать 10 чипов там, где был 1, и получить в 10 раз большую мощность, которую отвести жидкостью — это можно.
А вот увеличить хотя бы в 10 раз количество вычислений на транзистор по сравнению с GPU — мне кажется, нереально.
>Чем более последовательно исполнение конкретной программы, тем больше не повторяющихся последовательностей команд она содержит, значит труднее ее писать, значит меньше размер этого участка, значит быстрее исполняется.
Нет.
>Иными словами, чем больше объект, там более параллельно его вычисление.
Нет.
>Параллелизм не имеет ограничений, главное не заставлять писать параллельные программы человека — МОЗГ ЧЕЛОВЕКА НЕ ПРЕДНАЗНАЧЕН ДЛЯ НАПИСАНИЯ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ
Ну тогда можно ещё проще поступить: мы создаём ИИ, а ИИ нам пишет программы. И заодно и правильный суперкомпьютер придумает, зачем этим тогда вам заниматься.
Что вы с мощностью делать будете? Сейчас у вас 1 вт на 10е8 вычислений/с, как в обычных системах с CPU? Или 1 вт на 10e9 вычислений/с как в GPU при существенном ограничении на виды инструкций, на скорость последовательного исполнения, и на независимость блоков друг от друга?
Вообще, посчитайте, что за утюг вы хотите сделать с производительностью >10e14 вычислений, и подумайте, как вы сможете плотнее упаковывать чипы чем сейчас в системах типа TPU и в GPU фермах при наличии ограничений на отведение тепла с единицы объёма. (самая большой чип вам в помощь: Cerebras Wafer, почитайте про теплоотведение и про объединение нескольких чипов вместе, всё уже продумано и изготовлено не хуже вашего).
И наконец, ответьте, чем это будет лучше существующих систем по логике работы? И сейчас везде программы как dataflow представляются, и сейчас в железе отдельные команды на отдельные вычислительные узлы идут, вот только закон Амдала это вам не поможет обойти: скорость программы ограничена самым непараллелизуемым местом. И для большинства программ этот лимит параллелизма уже достигнут на 8-ядерных процессорах, для почти всех редких оставшихся программ — на 10к CUDA-ядрах, для оставшейся части оставшейся части программ — на кластере из CUDA-ядер / TPU-ядер.
Не понял, какую именно сеть надо учить. Вашу? А что вообще тогда у вас есть готового? Только идея?
А сравнивали ли вы ваш подход с генерацией эмбеддингов для индекса из строк перемену длины: когда берутся предложения, абзацы, страницы, и индекс строится для каждого из них, а не просто для каждого предложения/абзаца? Основную заявленную вами проблему это должно решать, при этом вычислительно брать намного проще.
А учитывая, что эмбеддинг, порожденный моделью, и так есть для каждого токена, построить усредненный эмбеддинг по каждому 1, 2, 3, 4, 6, 8, 12, 16, ... токенов и поместить их все в единый индекс должно быть крайне просто.
И вообще, не хватает каких-то численных оценок вашего изобретения. Скажем, взять сберквад или любой другой QA датасет и прогнать по нему базовый метод (обычный индекс по абзацам), метод, предложенный мной, и ваш -- должно быть делом несложным.
Ну, может они и воспроизводимы, например, можно собрать топик, в котором будет слово "её". Однозначно воспроизводимо. Но полезен ли кому-то такой топик?
Основная проблема рандомных топиков -- их неинтерпретируемость.
Ну, давайте думать вместе. А какая польза может быть с рандомных топиков?
То есть, ставьте гипотезы, а потом их уже доказывайте или опровергайте.
Какая-то статистика собрана, с чем-то поигрались, но выводы (нормальные/полезные) не сделаны... Без обид, но похоже на некачественно сделанный анализ!
Я конечно не настоящий сварщик (сборкой компьютеров занимаюсь совершенно любительски), но меня тоже смущает низкая эффективность всего в 5х относительно собственного потребления, хотя и радует поток воздуха. Обычный кулер 100-120мм для отвода около 100-150 Вт тепла потребляет 2 Ватта вроде бы, 160мА*12В=2Вт, то есть получается эффективность в 50х. (Кулеры на подшипниках скольжения на 120мм кстати тоже бывают 24 дБ на полной скорости). Ноутбучный кулер -- всё делим на 5, пропорция по мощности остаётся.
А пыль -- можно на боковой стенке ноутбука сделать очень мелкую решётку от пыли, она даст сопротивление воздуха, но т.к. кулер очень мощный в плане давления воздуха, то он справится.
PMI увы тоже работает не идеально, потому что в идеале для выделения фраз нужно считать статистику с учётом синонимов.
Поэтому скомбинировать и будут неплохие рекомендации.
1) Видимо, всё же фразу, а не предложение. Потому что какой родительный падеж у предложения "Я вчера мыл кота"?
2) Никак, потому что вам нужно знать, как слова во фразе друг от друга зависят и какие у них модели подчинения. А для этого нужно понимать предложение. Есть синтаксические парсеры, которые строят такую модель, хотя и не очень точно. Берёте такой парсер, понимаете, падеж каких слов нужно поменять, а pymorphy уже этим занимается.
3) Или ещё есть современный вариант: натравливаете GPT-3 / ChatGPT, и (часто) получаете правильный ответ.
Вообще, это стандартная задача NLP, и должна решаться в 5-10 строк. Проверим:
Чтобы перебрать все биграммы, нужно просто написать
Аналогично, если хотите все биграммы с пропуском в одно слово, то
А дальше используем Counter из стандартной библиотеки
Эх, немного не уложился в 5 строк, но в 10 строк уложился ;)
А вообще, есть такое понятие Wiki: PMI , которое гораздо лучше выделит подобные выражения. Просто нужно будет посчитать ещё униграммы и сделать рескоринг для биграмм.
Вот потом после таких опросов и получается непонятно что.
Требования к железке, чтобы работать с неё в путешествии, в офисе и дома -- разные!
В офис нужен нормальный мощный стационарный компьютер с 3 мониторами и отдельной беспроводной клавиатурой, которую можно двигать, а в дорогу -- лёгкий мощный но долгоживущий ноутбук с небольшим ярким дисплеем, в основном, для офисного и мультимедийного применения, потому что компилировать, запускать и отлаживать код, как-либо работающий с пользовательскими интерфейсами на ноутбуке (и фронтенд, и бэкенд) -- ну так себе удовольствие.
А какой у вас доверительный интервал, чтобы понять, что 0.629 лучше, чем 0.613 ? Может, у вас оценки ±5%? Тогда вы не отличите одно от другого, как вам и показывает MAE.
В общем, вы просто не знаете мат статистику, и с умным видом сравниваете случайные величины как обычные числа.
Кроме того (и вот тут вы должны испытывать особый стыд), ROC AUC определяет кривую для всех значений precision и recall, а на практике, вы будете использовать только одно конкретное значение на этой кривой, выбрав threshold. Правильно сравнить две кривые по одному числу нельзя, поэтому вы берёте какую-то функцию от этих кривых, которая даёт число для каждой кривой. И естественно, можно найти одну функцию, по которой одна меньше другой, и функцию, по которой всё наоборот.
Например, если зафиксировать TPR = 0.5 и TPR=0.8 здесь, то получим разные ответы о том, какая кривая лучше (считаем, что линии разного цвета -- это скоры разных моделей).
А если обобщить утверждение Сёрла с «перечисления правил», как в 192х-195х понимали компьютерный интеллект (через онтологии), до просто «современной компьютерной программы, с памятью и графическими ускорителями», тогда всё равно будет комбинаторный взрыв и те же проблемы?
Тут нужно объяснить, почему мы не считаем возможными текстовые определения через другие более сложные или наоборот более простые сущности (точка, пространство, направление, луч). И почему для определения через объём понятия считаем такое же использование других сущностей возможным.
Логики в этом нет, поэтому так и хочется спросить, нет ли здесь снобизма :)
> Я показываю, что контекст можно использовать не только для распознавания с учетом контекста (важно что увидели), а и для собственно для распознавания (важно откуда увидели).
Да, но я как раз и не понимаю, кому и зачем важно это «откуда увидели». И зачем про это говорить.
А вторая гипотеза, которая ставится под сомнение — широкий перебор *контекстов*. Большой набор фильтров, которые ловят какие-то корреляции между сигналами и контекстами — это нормально. А вот большой набор фильтров, которые изучают один и тот же сигнал в большом числе контекстов — это опять же кому нужно? Вот возьмём словарь биграмм слов с частотностью > 1e-9 (..., «и вот», «зелёный кедр», «он бриллиант», «весёлый клоун», «был клад», ...). Такой словарь запомнить реально, и человек это делает, но вот хранить второе слово в виде перебора из миллиона вариантов… прошлых слов? следующих ожидаемых слов? когда реально эти контексты будут встречаться лишь сотни и тысячи раз за жизнь и контекстов на слово будет всего несколько десятков или сотен штук — очень странная идея.
Зачем нужны миллионы контекстов на каждое слово?
>В нейрофизиологии слово «нейрон бабушки» ругательное. То что по групповой активности можно делать определенные заключения говорит о том, что есть «код бабушки», который возникает на этих нейронах.
Потому что конечно не один нейрон, за исключением момента движения мышц — тогда конкретной мышцей управляет один нервный узел, куда идёт сигнал от конкретных моторных нейронов. А вот когда говорим про ИНС — там понятно это модельные нейроны, которые могут соответствовать десяткам, сотням и тысячам реальных.
Ну и тогда всё же не код бабушки, а некая активность нейронов бабушки — см. видео по ссылке, что я дал выше: neuralink.com/blog
Был бы код, был бы и один нейрон (или последовательность нейронов), что активировалась бы каждый раз. (Кстати, тут возникает вопрос: а сколько нейронов управляет одной мышцей и как именно они друг с другом объединяются для управления?)
2) контекст, конечно, важен, но в общем виде распознавание с учётом контекста в нейросетях сводится всего лишь к заданию функции от двух аргументов: f(X, context). При этом надо понимать, что человек тоже не работает с произвольными контекстами в произвольный момент времени, грубо говоря, что он не пытается понять, видя кошку, с какой именно стороны она кошка: он её не вращает, не обходит со всех сторой (без явной такой цеели). Или распознавание произошло — и тогда мозг не знает, какой был контекст, или же не произошло — и тогда мозг тоже не знает, какой был контекст. В этом смысле ваша теория не права, и тем более, нельзя её рассказывать в таком общем виде, как это делаете вы.
Вы можете придумать контекст (а можете не придумать) — и это уже отдельная мыслительная задачка для мозга по придумыванию этого контекста.
(По моделированию на нейросетях, опять же, знание контекста не является полезной информацией, если нужно, нейросеть начинает его продуцировать, если не нужен — не начинает)
И уж тем более доказывать пользой энигмы пользу от контекстов — совсем натягивание совы на глобус. Хотелось бы всё же реальной пользы контекстов. И кстати, с вами даже Джефф Хокинс несогласен: в своей последней книге он говорит, что в основном нейроны хранят информацию для обработки других зон коры, а не собственные различные контексты. То есть это намного ближе к иерархии из логистических сумматоров, нежели к энигме.
3) Про признаковое описание и «курс нейронных сетей» — опять же, всё немного не так.
Признаковое описание в описанном виде — это лишь один из способов сделать обработку с помощью нейронных сетей, которое в таком виде показывает лишь ущербность, но не нейросетей, а подобного способа обработки — поэтому им и не пользуются на практике.
4) Несмотря на всё это, «нейроны бабушки», несмотря на всё высмеивание непрофессионаламии, действительно существуют у человека, правда, всё же в виде совокупной активации нескольких нейронов, иначе бы нейралинк не работал на шимпанзе и свинье в ролике: neuralink.com/blog. Отдельные нейроны тоже активируются, но лишь в части случаев (не могут работать долго и срабатывать часто), а вот их сумма уже правильно работают (то есть мы поставили логистический нейрон на выходе, чтобы это надёжно работалоо).
Теперь, когда мы из смысла (3) поняли, что
кузнецконтекст нам не нужен, мы можем вернуться к изначальным «объёму понятия» и «определению», и оставить за понятием «смысл» изначальное его значение: смысл — это то, что обусловливает употребление или понимание той или иной фразы, а именно, совокупность семантики (общего значения понятия) и прагматики (контекстуально-зависимого значения понятия). Проще говоря, смысл — это значение слова в контексте. И в таком виде, сети типа BERT именно это и получают в своих эмбеддингах (в своих активациях нейронов внутренних слоёв), а значит, компьютер именно что понимает смысл высказывания.Особенно ярко это демонстрируют CLIP и DAL*E, демонстрируя не только визуальные нейроны бабушки, но и комбинированые текстово-визуальные.
Трасса программы — это поток исполнения. А вы говорили про количество повторов *в коде* программы.
Вы сами запутались уже в своих половинчатых определениях.
Смотрите тривиальный пример:
1) В программе написано 100 раз «если а<100 то b=1». Это 100 повторов.
2) В программе написана процедура if_a: если а<100 то b=1 и потом она вызывается 100 раз в цикле.
1 повтор и 100 повторов — время выполнения одинаковое.
Если же вы говорили не про повторы *в коде*, а про повторы *в трассе*, то сначала объясните, как вы их измеряете, а во вторых, как это связано с вашим изначальным утверждением «Чем более последовательно исполнение конкретной программы, тем больше не повторяющихся последовательностей команд она содержит, значит труднее ее писать». В нём 3 (!) не связанных друг с другом вещи (причём, не связанных даже корреляцией!). Вот из моего примера программа (1) более последовательна, чем (2), при этом содержит больше повторяющихся команд, а писать (1) и (2) одинаково по сложности…
А как связаны количество повторов в коде и скорость исполнения? Никак.
Ещё вам и по числу транзисторов надо оптимизироваться, потому что сейчас 20 млрд транзисторов на чип — это потолок.
Упаковать 10 чипов там, где был 1, и получить в 10 раз большую мощность, которую отвести жидкостью — это можно.
А вот увеличить хотя бы в 10 раз количество вычислений на транзистор по сравнению с GPU — мне кажется, нереально.
>Чем более последовательно исполнение конкретной программы, тем больше не повторяющихся последовательностей команд она содержит, значит труднее ее писать, значит меньше размер этого участка, значит быстрее исполняется.
Нет.
>Иными словами, чем больше объект, там более параллельно его вычисление.
Нет.
>Параллелизм не имеет ограничений, главное не заставлять писать параллельные программы человека — МОЗГ ЧЕЛОВЕКА НЕ ПРЕДНАЗНАЧЕН ДЛЯ НАПИСАНИЯ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ
Ну тогда можно ещё проще поступить: мы создаём ИИ, а ИИ нам пишет программы. И заодно и правильный суперкомпьютер придумает, зачем этим тогда вам заниматься.
Вообще, посчитайте, что за утюг вы хотите сделать с производительностью >10e14 вычислений, и подумайте, как вы сможете плотнее упаковывать чипы чем сейчас в системах типа TPU и в GPU фермах при наличии ограничений на отведение тепла с единицы объёма. (самая большой чип вам в помощь: Cerebras Wafer, почитайте про теплоотведение и про объединение нескольких чипов вместе, всё уже продумано и изготовлено не хуже вашего).
И наконец, ответьте, чем это будет лучше существующих систем по логике работы? И сейчас везде программы как dataflow представляются, и сейчас в железе отдельные команды на отдельные вычислительные узлы идут, вот только закон Амдала это вам не поможет обойти: скорость программы ограничена самым непараллелизуемым местом. И для большинства программ этот лимит параллелизма уже достигнут на 8-ядерных процессорах, для почти всех редких оставшихся программ — на 10к CUDA-ядрах, для оставшейся части оставшейся части программ — на кластере из CUDA-ядер / TPU-ядер.