А помните?

Как несколько лет назад нам активно впаривали технологию под названием блокчейн? Мол, эта технология способна на то, чтобы перевернуть мир. И как всем вдруг стало казаться, что в блокчейне обязательно надо хранить решительно всё — от результатов голосования до всех финансовых транзакций компании?

Нет, я не спорю, в качестве решения для хранения данных, обязательно требующих верифицируемости, причём публично — это не обязательно плохое решение. Навалять код можно буквально минут за десять, у меня в журнале даже было пару рассказов про эту технологию. Но повсеместный снос крыши на этой почве я хорошо помню. АААА!!!! Блокчейн это круто!!! Обязательно внедрять!!! Немедленно!!! Хватай мешки — вокзал отходит!!!”

А теперь я сижу и чешу репу — а в этот раз не снесло ли, случаем, у всех крышу на обязательном внедрении систем исскуственного интеллекта, причём повсеместно? Нет, искуственный интеллект — это прекрасно, но вот на кой чорт он мне в нотпаде? Системы ИИ небезгрешны. И повсеместное их вкорячивание в недра всех программ без разбору я считаю абсолютно ненужным. ИИ в софте хорош, когда он к месту. Скажем, он очень к месту в фотошопе. А на кой бес он в Аксессе? Все что, так сильно соскучились по Скрепышу?

Каждый раз одно и то же: сначала “всем срочно внедрить”, потом — “а зачем мы это сделали?” Очень может быть, что “ИИ” скоро займёт почётное место рядом с “блокчейном” — в списке забытых модных слов. Ведь видно, что уже наступает отрезвление — прогресс ИИ начал упираться в закон убывающей отдачи, а в Британии внезапно оказалось, что при любых раскладах на все хотелки тупо не хватит электроэнергии. А у нас (тоже внезапно) выяснилось, что чтобы накормить все эти ИИ-мозги электричеством, пришлось вернуть в строй угольные станции. Хотя все вроде бы уже согласились, что уголь — это плохо, радиоактивно (не шучу, они выбрасывают больше радиации чем АЭС), и вообще, на другом конце земного шара Греточка плачет в тужурку. А АЭС строить — это дорого, долго и не хайпово. Я вот уже несколько раз упоминаю в журнале АЭС “Воугл”, что в братской Джорджии. Два её реактора ввели в строй только в 2023 году, а подписал бумаги на её строительство ещё Обама, в 2009. А ИИ всем надо “прямщас”, и чего с этим делать при таких вводных — решительно неясно.

Все думали, что повсеместный переход на электромобили перегрузит нашу энергосистему, ан беда подползла с совсем другого боку. Ждём, когда появятся стартапы по оптимизации потребления электричества с помощью ИИ. Круг замкнётся.

Про замену айтишников ИИ

Вот подумал, а какие профессии в мире информационных технологий может убить искуственный интеллект?

На мой взгляд, никакие.

Возьмём, например, сисадминство, мне наиболее близкое.

Что в мире сисадминства может сейчас сделать ИИ? Писать несложные скрипты? Ну, может — хотя с большими оговорками, про них ниже. Рисовать правила для брандмауэра под нужные задачи? С большим скрипом, знаете ли. Вот я попросил нарисовать правила для брандмауэра, стоящего между IIS веб-сервером, прицепленным к домену, и контроллером домена — ИИ полностью просохатил NTP, например (порт 123/UDP). А если у тебя на серверах и доменных контроллерах время не совпадает, то кверху мехом поплывёт керберос, после чего вообще вся аутентификация в домене пойдёт по известному месту.

ИИ — птица гордая, не пнёшь — не полетит:

Да шут с ними, со скриптами и правилами для брандмауэра. Витую пару кто будет обжимать? Тоже ИИ? А по фальш-потолку лазить будет кто, тоже он? Менять батарейки в ИБП, сервера ставить в рэки, подключать и настраивать коммутаторы, монтировать точки беспроводного доступа, менять картриджи в ленточных накопителях, отвозить их в банк, и так далее, и тому подобное — кто будет? Неужели тоже ИИ?

Нет, братцы-кролики, это какой-то киберсисадмин-терминатор понадобится, и что самое главное — стоить-то он будет дороже человека.

Вот дурацкие картинки рисовать — это оно умеет, да.

Какие ещё профессии в ИТ может заменить ИИ? Программиста, что ли? Ну, я не вполне программист, хотя бакалавра я получил в CS. Но даже из того, с чем я сталкивался лично, вполне очевидно, что код, генерируемый ИИ, во всяком случае, на данный момент — говно. Нет, я не хочу сказать, что он не работает.

Просто во-первых, библиотеки, объекты, и вызовы, которые использует программа, ИИ написанная, обычно уже года два-три не используются, так что от среды разработки в рожу как минимум прилетают предупреждения о том, что “code deprecated”. А во-вторых, в программировании способов снять шкуру с кошки — мильён, и ИИ не выберет самый лучший. Он выберет тот, который знает.

Я тут у себя давненько написал было гневный пост о том, что R, дескать, медленнее Питона с Нампаем — используя код на R, нарисованный ЧатЖПТ. А потом в комменты пришёл погромист на R и немножко, но нежно повозил меня рожей об стол, дав мне нормальный код на R, который выполнялся раз в десять быстрее минимум.

На данный момент код, генерированный ИИ, годится максимум на то, чтобы начать с чем-то разбираться (как вот я, например, ничего не знал про язык R), а как только разберёшься — сразу же выясняется, что делать лучше не так, а совсем даже по-другому.

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

Можно, конечно, уповать на то, что “щас ИИ допилят и тогда”. А вы знаете, я не разделяю оптимизма. И дело даже не в том, что я считаю, что мы практически полностью выбрали тот запас, который есть в существующих моделях ИИ — хотя и это тоже правда. Чтобы продолжать развивать модели так, как они развиваются сейчас, экстенсивно, нам надо было позавчера начинать строить ядерные электростанции, причём массово. Потому что жрёт это дело сейчас — просто как не в себя. Вот у шурина есть школьный товарищ, инженер-электрик “Сатерн Компани“. Пришёл к ним Микрософт, говорит, хотят строить датацентр для ИИ в Миссиссиппи — благо там земля дешёвая. Главный затык — ентому датацентру вынь да положь 500 мегаватт мощности. А где её взять, спрашивается? 500 мегаватт — это, мягко выражаясь, дохера как много. И ента ваша “зелёная энергия” с ветрячками да панельками её обеспечить тупо не в состоянии. Не в режиме 24/7.

Главный затык — он в том, что любая, самая сложная модель — бессмысленна без тренировки, а на чём её тренировать? На том, что лежит в интернете? В интернете лежит “мнение большинства”, а в узкоспециальных вопросах большинство, как известно, всегда неправо.

Но даже если в интернете лежала бы “правда”, то я не знаю, как в других областях, а в сфере информационных технологий “правда” теряет актуальность чуть быстрее, чем мгновенно, а так как модель требует для тренировки огромное количество машинных часов, к тому времени, как она эту “правду” усвоит, она уже устареет. Именно поэтому код, генерируемый ИИ, почти всегда (в моём опыте) маркируется как “deprecated”.

Так что лично я считаю, что айтишникам бояться нечего. Пока (пока) ИИ работает, на мой взгляд, именно так, как он должен работать — “множителем силы” для мастеров. Подмастерье, если можно так высказаться; подспорье как максимум.

Урод 3.0

Вышел GIMP 3.0. Скачал, поставил. Убедился в очередной раз, что эта поделка до сих пор ни для чего нормального не годится, и стёр.

History brush? Не слышали.
Создание файла CMYK? Нет, до сих пор не видели.
Почему в примитивном диалоге Curves в УРОДЕ 3.0 до сих пор, японский бог, нет пипеток выставить high, mid, и low? На кой чорт вообще нужен этот диалог, если ты ему даже нормально сказать не можешь, что на твоём изображении является самой тёмной точкой (или наоборот, самой светлой) — и что всё остальное надо посылать нахер? А? А???

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

Во-первых, ими очень сложно пользоваться. Мне пришлось просмотреть два ролика на ютубе, чтобы понять, КАК — вот такой вот “продуманный” интерфейс. В фотошопе ты идёшь в меню слой – эффекты — и применяешь, какие надо. А здесь надо сначала применить какой-то эффект, чтобы он появился в меню применённых эффектов для слоя.

Во-вторых, не все эффекты являются обратимыми — например, эффекты освещённости (lighting) как ты применил — и всё, хана, выбито зубилом в граните, как-то поменять не получится, разве что через Ctrl+Z. Но фишка-то — как раз в лёгкой изменяемости и обратимости!!

В-третьих, работают они исключительно медленно — глазами видно, как изображение меняется по кусочкам, будто снова за 80486 компьютер сел. Видеоускорители? Нет, извините, прошло мимо нас.

А знаете, почему “всё у них так”? Потому что GIMP создают программисты. Во-первых, они делают то, что им кажется важным. А во-вторых, они делают это так, как им кажется правильно, а не пользователям. А фотошоп? А фотошоп создаётся не сколько программистами, сколько командой профессионалов из самых разных отраслей, как то: печатников, редакторов, верстальщиков, фотографов, художников, дизайнеров интерфейсов, вебмастеров, и так далее. А над ними всеми стоит начальник проекта, с плёткой в руках, и всех постоянно бьёт по жопе, чтобы было так, как он/а сказал/а, а не так, как они сами себе придумали, чтобы было удобно и нужно. Потому что если так не делать, то вот и получится УРОД версии 3.0.

Может ли машина мыслить?

Написал коммент ув. dibr, решил, что он достоин отдельного поста.

Скажу сразу, ответ на вопрос я не знаю, может ли. Не видел пока примеров того, как ИИ способен на такие способы мышления, например, как аналогия — хотя видел примеры дедукции.

Я не знаю, какое конкретно мышление есть у ИИ, но знаю точно, какого у него нет. У ИИ до сих пор отсутствует критическое мышление, он как Адам и Хавва до того, как они поддались козням шайтана. “Как в тренировочных материалах указано — так и верно”. Об этом свидетельствуют периодические очевидные прогалы в логике, например:

Люди даже отследили это до какой-то шутейной статьи в стиле The Onion, из которой ИИ почерпнул сей премудрости. Хотя человеку, знакомому с пищеварительной системой, вполне очевидно, что даже если в гравии были бы какие-то микроэлементы, обычного пищеварительного сока и энзимов решительно недостаточно, чтобы достать их из кварца или там полевого шпата.

Не менее прекрасно предложение добавить “нетоксичный клей” к пицце.

И вот то, что ИИ сам не умеет критически относиться к материалу, который сам же переваривает — не знаю, как другим, а мне говорит о том, что с реальным мышлением там пока туговато.

Статистика с фаерволла

Сделал, наконец, правильную отгрузку статистики с файерволла на pfSense через Syslog, написал парсер на Питоне, который затем загружает все метаданные о каждом пакете данных в базу данных на SQL Server. SQL Server, кстати, работает на ентом вашем Линупсе, потому как где я ещё возьму машину, чтобы сразу и SQL Server и Syslog?

Так вот, за последние семь месяцев файрволл пропустил через свой наружный интерфейс 104,992,979 пакетов данных. Из которых 56,178,554 были злонамеренными, и были фаерволлом блокированы. Это у нас получается, на минуточку, что 53% (больше половины!) всего трафика — это боты и и прочие крякеры. На самом деле, ещё больше — ибо фаервол, голову прозакладывать можно, блокировал далеко не всё, что надо бы.

Рехнуться, сколько в этих ваших интернетах — ГОВНА всякого. Намного больше, чем нормального, нужного людям контента. А ведь и за этот говнотрафик деньги плОчены — его тоже надо раутить, пересылать туда-сюда, гонять по волокнам. Прямо как реактивная нагрузка какая-то, нихрена полезной работы не делает, а провода греет. И что с этим делать — решительно непонятно.

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

ИИ-погромизм

Занимался вчера созданием нейросетей под руководством ChatGPT. По итогам я имею сказать вот что.

В целом — впечатляет. Даёт не самый плохой код на Питоне для создания нейросети на TensorFlow, что характерно — используя keras. Практически то же самое, что я сам рисовал четыре года назад.

Только в этот раз я замахнулся пошЫрше и решил нейросети скормить csv с “финансовыми транзакциями”. Внутри csv было одиннадцать колонок, десять просто с числами, а одиннадцатая — с довольно сложным вычислением из данных, находящихся в шести колонках (сложение двух дробей, вычисление 10% от полученного, и складывание с ещё двумя колонками). Четыре оставшиеся колонки не делали ничего.

Модель делал пятислойную, сто нейронов в четырёх слоях, один нейрон в выходном слое (это уже не ЧатЖПТ предлагал, это уже я сам). Наверное, это даже избыточно сложная модель.

Сделал два csv файла, один с 200 строками — это был тренировочное множество, и второй — всего с десятью. Я хотел посмотреть, сможет ли нейросеть распознать, какая именно зависимость существует в одиннадцатой колонке, и сможет ли она предсказать данные, полученные таким образом.

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

Но помимо этого, у меня возникли небольшые сложности, и возникли они именно от применения ИИ.

Во-первых, ЧатЖПТ нередко даёт код для Питоновских библиотек, который уже является устаревшим (deprecated). Например, свойство pandas.DataFrame.iloc — вытаскивание индивидуальных колонок из pandas.DataFrame.

Во-вторых, ЧатЖПТ создаёт в коде баги. Например, вместо десяти строк в тестовом наборе данных у меня почему-то считывались только девять. Разговор шёл примерно вот так:

–А у меня вместо десяти ожидаемых строк только девять.
–Может, данные кривые? Вот как их надо нормализировать.
–Данные нормальные, но считывается только девять строк вместо десяти. Первая строка проглатывается.
–Не должна. Вот код, как правильно считывать csv через pandas.read_csv
–Я этот код и использую, но первой строки нет.
–Ну, правильно, потому что по умолчанию первая строка считывается в имена колонок. В pandas.read_csv надо ставить параметр header=None, чтобы так не происходило.
–А чо сразу-то не сказал?
–Извиняюсь.

Но в целом (в целом) — впечатляет, да. Далеко не с каждым человеком я на эту тему могу поговорить, более того, не каждый сразу “на гора” выдаст работающий (более-менее) код. Ошибается иногда? Ну да, ошибается. Покажите мне человека, который не ошибается, и я покажу вам лентяя, который никогда ничего не делает. Тем не менее, лентяю в способности рассуждать почему-то не отказывают, а искуственному интеллекту — таки да. Неправильно это, ИМХО. ИИ вполне способен на рассуждения.

Умер Никлаус Вирт

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

if (a = b) {}

И это выполнится! Так как здесь = рассматривается как оператор присвоения, и соответственно, возвращает-то он True, потому что присвоение произошло успешно! А на Паскале = это оператор сравнения внутри If, а присвоение делается как a := b

Ну, а на сях пришлось оператор сравнения делать == , что нередко приводило к ляпам. Про Джаваскрипт с его разнообразием =, ==, и аж === даже начинать не буду. В топку, сразу.

Но, наверное, главная заслуга Вирта это даже не язык Паскаль. А в том, что усилиями Вирта и Дейкстры был убит оператор GoTo. Ну, в языках высокого уровня. Так-то все эти if и while, и прочие for компилируются-то в ассемблеровский JMP всё равно.

Пусть он обретет покой.

АйТишный Йумар

В любой сфере есть свой профессиональный юмор. АйТи не исключение. Увы, шутки поймут не все.

Я бы рассказал вам шутку про UDP, но, боюсь, не дойдёт.

–Хочешь шутку про UDP?
–Да ну нафиг, три раза повторять придётся.

TCP заходит в бар и обращается к бармену:
–Я хочу пива.
–Ты хочешь пива?
–Да, я хочу пива.

Типов людей в мире всего 10. Одни понимают двоичную запись, а другие нет.

–Из-за ковида мы переделали все наши приложения для работы с UDP вместо TCP.
–Почему?
–Чтобы избегать рукопожатий.

И последняя, любимая, но, увы, работающая только по-английски из-за игры слов.

A SQL query walks into a bar and and sees two tables. He walks up to them and says, “Do you mind if I join you?”

Объяснения для тех, кто не понял.
Continue reading “АйТишный Йумар”

Не прошло и нескольких часов…

…как очередную дырень в том же самом, уже набившем оскомину, спекулятивном выполнении кода, в очередной раз нашли уже в процессорах Интел серии Core, от 6-го до 11-го поколения. Окрестили Downfall.

Можете ознакомиться по ссылке. В этот раз крадут данные, используя спекулятивную пересылку данных в векторной инструкции Gather (часть расширения AVX2/AVX512, ЕМНИП).

Я же говорил — это музыка будет вечной, пока от спекулятивного исполнения не откажутся совсем. А не откажутся от него минимум пока скорость оперативной памяти не вырастет на несколько порядков. А это произойдёт… даже не знаю, когда. Может быть, и никогда.

Нет, я слабо верю в то, что дыры в SE когда-нибудь прикроют окончательно. С тех пор, пока нашли первые, постоянно находят всё новые и новые — уж такая технология.

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

А вот кому жарко? А жарко провайдерам, например, облачных ресурсов. Арендуешь ты, такой красивый, у них часть вычислительного узла. Какой ты на этой части узла будешь запускать код — одному Гефесту известно. У провайдера нет никакого контроля над твоим кодом. А если ты запустишь код, ворующий данные у соседа, с которым вы делите вычислительный узел, что тогда будет? AWS, Azure и прочие очень много денег и усилий тратят на обеспечение безопасности одного жильца, от другого жильца. И открытие вот таких вот дыр им здоровья… ох, не прибавляет.

Карманный Скайнет

По наводке ув. ny-quant. На видеокарте я запустить не смог, потому что у меня лапки. С форком GPT4AllGPU почему-то надо приставлять отдельную модель LLaMa, которую надо скачивать самому, и я не смог разобраться, какую. Поэтому запустил на процессоре.

С трудом, надо сказать, запустил. У меня восемь пеньков i7 десятого поколения и 64 гектара памяти:

Ответ на простой вопрос (как лучше всего гладить кошку) занимает минуту-две. А вот креативная деятельность (напиши мне поэму про сисадмина) уже йок, может пиликать минут десять и больше.

Запускаю через третий питон внутри WSL2.

Установить:

pip3 install nomic

Потом в интерактивном python3:

from nomic.gpt4all import GPT4All (в первый раз занимает очень много времени, скачивает натренированную модель)
m = GPT4All()
m.open()
m.prompt(“Write me a short story about a kitten”)

Я нарисовал простейший код чтобы общаться. Увы, грёбаное форматирование наверняка похоронит отступы:

#!/usr/bin/python3
from nomic.gpt4all import GPT4All
m=GPT4All()
m.open()
while(True):
prompt = input("Please ask me something or say STOP to quit: ")
if (prompt == "STOP"):
break
else:
response = m.prompt(prompt)
print(response)

Поиграюсь, но ресурсоёмкость, конечно, аховая.

Update: барахло полное. ЧатЖПТ хотя бы правильно на простые вопросы отвечал. Этот даже не знает, как запустить внешнюю программу с указанием параметров из скрипта на ПауэрШелле.