Как стать автором
Обновить
-3
0.1
Андрей @Moonlight1401

Пользователь

Отправить сообщение

Ошибки в языке Go — это большая ошибка

Время на прочтение3 мин
Количество просмотров3.5K
// гофер пытается найти логику среди обработки ошибок
+-------+-------+-------+-------+-------+-------+
|       |  err  |       |  err  |       |  err  |
|  ,_,,,        |       |       |       |       |
| (◉ _ ◉)       |       |       |       |       |
|  /)  (\               |       |       |       |
|  ""  ""               |       |       |       |
+       +-------+       +-------+       +-------+
|       |  err          |  err  |       |  err  |
|       |               |       |       |       |
|       |               |       |       |       |
+-------+       +-------+       +-------+       +
|  err  |               |  err                  |
|       |               |                       |
|       |               |                       |
+       +-------+       +       +-------+       +
|       |  err  |               |  err  | logic |
|       |       |               |       |       |
|       |       |               |       |       |
+-------+-------+-------+-------+-------+-------+

Я пишу на Go несколько лет, в Каруне многие вещи сделаны на нём; язык мне нравится своей простотой, незамысловатой прямолинейностью и приличной эффективностью. На других языках я писать не хочу.


Но сорян, к бесконечным if err != nil я до конца привыкнуть так и не смог.


Да-да, я знаю все аргументы: явное лучше неявного, язык Go многословен, зато понятен, и всё такое. Но, блин, на мой взгляд Го-вэй Го-вэю рознь.

Читать дальше →
Всего голосов 21: ↑19 и ↓2+21
Комментарии37

Я тебя с вертухи сломаю, если ещё раз заговоришь об ИИ

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров48K

Последние инновации в сфере ИИ, наиболее примечательными из которых стали проекты наподобие GPT-4, очевидно, могут иметь далеко идущие последствия для общества: от утопического избавления от монотонного труда до антиутопического ущерба для работы художников в капиталистическом обществе, а также до экзистенциальных угроз самому человечеству.

Лично я получил формальное образование дата-саентиста, даже выиграв в высококонкурентном конкурсе по машинному обучению в одном из лучших университетов Австралии и написав магистерскую, для которой создал в MATLAB с нуля собственные библиотеки. Я не гений в этой сфере, но, очевидно, лучше большинства конкурентов, то есть практиков вроде меня; я не могу, сидя в пещере, создавать собственные библиотеки на C, но умею читать учебники, реализовывать готовые решения на языках высокого уровня и использовать библиотеки, написанные элитными организациями.

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

Читать далее
Всего голосов 203: ↑185 и ↓18+202
Комментарии215

Цикл разработки LLM

Время на прочтение4 мин
Количество просмотров4.1K

В этой статье я использую мой опыт обучения больших языковых моделей (смотрите серию видео на канале Ruslan Dev), чтобы выявить и описать основные фазы разработки собственной LLM.

На сегодняшний день разработчики GenAI моделей, как правило, используют веса базовых (foundational) моделей, а не обучают нейросеть с нуля. В качестве данных для обучения часто используются ответы state-of-the-art LLM, таких как GPT-4. Этот подход получил распространение с тех пор, как создатели Stanford Alpaca показали, что инференс небольшой модели наподобие Llama 7B можно приблизить по качеству к GPT-3 путем файнтюнинга на ответах последней.

С тех пор и коммерческие, и опенсорс-модели шагнули вперед. Я работал с базовой моделью Llama-3, обученной на беспрецедентно огромном корпусе из 15 триллионов текстовых токенов, что дает широкие возможности для файнтюнинга. А датасет для обучения я собирал с помощью последней модели OpenAI - GPT-4o. Как видите, переменные изменились, но уравнение осталось то же - подход Альпаки работает по-прежнему.

Читать далее
Всего голосов 7: ↑6 и ↓1+8
Комментарии6

Машинное обучение для чайников

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров7.4K

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

Мы погрузимся в машинное обучение с помощью:

Разбора основной парадигмы обучения -- обучение с учителем (Supervised Learning).
Рассмотрения математической основы машинного обучения на двух моделях: линейный дискриминантный анализ (LDA) и наивный байесовский классификатор.
Примера кода на библиотеке scikit-learn, позволяющей реализовать обсуждаемые модели.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии6

Aqueduct: Как мы экономим железо для МЛ-вычислений

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2K

Привет! Меня зовут Олег Бугримов, я руковожу разработкой в команде Data Science SWAT в Авито. Мы занимаемся инженерией для машинного обучения. Одно из направлений - это оптимизация продового инференса. Наша задача чтобы модельки работали быстро и не потребляли безумное количество ресурсов. Так вот, мы дооптимизировались до того, что реализовали инструмент который позволяет сэкономить 30% железа. Вы видите реальный график нагрузки GPU-процессора

Читать далее
Всего голосов 7: ↑7 и ↓0+9
Комментарии9

Как справиться с нехваткой открытых данных для обучения и тестирования ML-моделей

Время на прочтение7 мин
Количество просмотров4.2K


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


Для решения проблемы мы создали открытый инструмент Time Series Generator. Я рассказал о нем на митапе, посвященном open source-разработке для научных задач. Под катом делюсь особенностями разработанного решения и рассматриваю реализуемые им задачи.

Читать дальше →
Всего голосов 31: ↑30 и ↓1+39
Комментарии5

10 библиотек Python для машинного обучения — подборка для начинающих

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров10K

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

Собрать подборку помог Кирилл Симонов — ML-разработчик компании IRLIX с экспертизой в компьютерном зрении.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии0

PINN или нейросети, знающие физику

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.6K

Что такое PINN и какова область их применения?

PINN появились сравнительно недавно (в 2019 году была опубликована работа Raissi), но уже активно применяются для некоторых задач физики. Отличительная особенность данных нейросетей состоит в том, что в Loss‑функцию включены невязки от уравнений, которые описывают рассматриваемый физический процесс. Вход такой нейросети — это координаты (пространственные или временные, в зависимости от задачи). И еще одна особенность — для обучения не требуется таргетов, так как, повторюсь, в Loss минимизируется отклонение предсказанных значений от уравнений.

Можно сказать, что PINN — это замена численному моделированию и тогда, возникает вопрос: «А нужны ли нейросети там, где хорошо работают численные методы». Но не все так просто. Представьте, что Вы или Ваш коллега провел эксперимент, например, измерил скорости частиц в потоке жидкости, или получил точечные измерения температуры. Если Вы действительно имеете опыт проведения эксперимента, наверняка знаете, что экспериментальные данные далеко не идеальны и могут принести много головной боли при обработке. А теперь представим, что все же Вы эту обработку провели, получили датасет из эксперимента, и теперь хотите эти данные использовать в уравнениях, чтобы получить другие параметры течения. Например, измерили скорость, а из уравнений гидродинамики, хотите получить давление. Или другими словами, провести ассимиляцию данных, говоря на современном околонаучным языком. Численное моделирование в таком случае можно дать сбой, потому что даже тщательно отфильтрованные данные могут быть шумными (особенно если от них требуется брать производные, а если еще и вторые, то совсем, шляпа). Или их может быть мало (например, температуру измеряли термопарой в нескольких точках). В данном случае, вроде, эксперимент есть и потенциально восстанавливать одни величины по другим можно, решая уравнения. И тут на помощь могут прийти PINN. Потому что они работают иначе, чем численные методы. Они не используют схем переноса, а параметры нейросети минимизируются в выбранных точках.

Читать далее
Всего голосов 6: ↑6 и ↓0+10
Комментарии6

Трансмировая идентичность: мультивёрсные двойники, границы «я», свобода воли и квантовое бессмертие

Уровень сложностиСредний
Время на прочтение36 мин
Количество просмотров2.4K

Спросите себя: кто я? А кого вы, собственно, спрашиваете? Почему я — это я, а не кто‑то другой? Я в прошлом и я в будущем — это всё ещё я, или уже не я? Что делает меня мной? Что нужно изменить в моём теле и в моей психике, чтобы я перестал быть собой? Что во мне остаётся неизменным в течение всей жизни? Могут ли разные люди думать одни и те же мысли? Могу ли я в одних и тех же обстоятельствах принимать разные решения? Если меня усыпить и создать идентичную копию, кем из двойников я себя осознаю, когда проснусь? Все эти вопросы обретают новый смысл с точки зрения многомировой интерпретации Эверетта, согласно которой у каждого из нас есть множество двойников в параллельных мирах. Вы никогда не знаете точно, кем из этих двойников являетесь и в каком мире находитесь. Означает ли это, что вам нужно переопределить своё «я» или полностью от него отказаться, заменив местоимением «мы»? В этой статье мы разбираем все вопросы, связанные с тождеством личности, самоидентичностью в Мультивёрсе, расщеплением наблюдателя и свободой воли. Также мы разоблачаем популярный миф о квантовом бессмертии.

Читать далее
Всего голосов 8: ↑3 и ↓50
Комментарии155

Микросервисы в представлении среднего разработчика, и как всё на самом деле

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров51K

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

Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.

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

погрузиться в микросервисы
Всего голосов 231: ↑227 и ↓4+253
Комментарии207

systemD с 0 до 1: библия сисадмина

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров17K


Что бы кто не говорил, systemD становится стандартом систем инициализацией в линуксе. И с 80% вероятностью все сервера будут с systemD. Не факт, конечно, есть и личные сервера, на которых может стоять хоть Gentoo, хоть Devuan, хоть NixOS.

Некоторые дистрибутивы хотят даже перейти с загрузчика Grub на systemd-boot! Потому знать, как работать с данной системой инициализации, должен каждый сисадмин и просто программист, ибо сейчас он практически везде.

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

А также напишем небольшой скрипт на Python для автомизации некоторых задач. Приятного чтения, господа линуксоиды и просто пользователи!
Читать дальше →
Всего голосов 49: ↑44 и ↓5+47
Комментарии11

Умный дом: обсуждаем стереотипы, избегаем ошибок и начинаем пользоваться

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.3K

Здравствуй, Хабр! Меня зовут Оняков Федор, я старший Web-программист в Петрович-Техе. Но сегодня мы будем говорить не о моей работе: уже больше четырех лет я развиваю свой умный дом и помогаю делать умные дома друзьям и коллегам.

Одни приходят к умному дому из соображений экономии, другие – ради комфорта, третьи – из любопытства. Среди историй есть драматические: был приятель, который чуть не затопил 9 этажей соседей, другой чуть не устроил пожар из-за камина. После они всерьёз занялись автоматизацией бытовой инфраструктуры. Истории объединяет смена точки зрения: люди думали, что умный дом – это какое-то баловство для богатых, а сейчас выстраивают автономные системы, упрощающие жизнь.

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

Читать далее
Всего голосов 14: ↑10 и ↓4+6
Комментарии106

Как работают языковые модели

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров7.3K

Если мы хотим использовать большие языковые модели (БЯМ) в своей работе и при этом называть результаты творческими, нам придётся понять, как они работают — по крайней мере, на высоком уровне.

Существует множество отличных руководств о внутренних механизмах языковых моделей, но все они довольно техничны. (Заметным исключением является статья Нира Зичермана в журнале Every о том, что БЯМ — это еда.) Это обидно, потому что есть всего несколько простых идей, которые нужно понять, чтобы получить базовое представление о том, что происходит под капотом.

Я решил изложить эти идеи для вас — и для себя — в максимально свободной от жаргона форме. Приведённое ниже объяснение намеренно упрощено, но оно должно дать вам хорошее представление о том, как всё работает. (Если вы хотите пойти дальше упрощений, я предлагаю поместить эту статью в ChatGPT или Claude).

Готовы? Приступим.

Читать далее
Всего голосов 17: ↑17 и ↓0+25
Комментарии0

Можно ли освоить иностранный язык за 3 месяца?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров29K

Здесь я поговорю про пять составных частей английского:

Speaking
Writing
Reading
Listening
Vocabulary

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

Читать далее
Всего голосов 35: ↑10 и ↓25-12
Комментарии132

Код доступа Termux

Время на прочтение62 мин
Количество просмотров153K

Лонгрид посвящается любителям CLI в знак солидарности лучшего эмулятора терминала на OS Android, который испытывает «кошмарную» монополию Google.

В данной работе вербализация пойдет о нижеизложенном со всеми остановками:

[+] глубоко настраивать средý (флэшка, виджет, стиль, зеркала и конфиги);
[+] управлять серверами через ssh;
[+] скачивать ролики/отрывки с YouTube;
[+] нарезать видео, создавать gif;
[+] воспроизводить текст/музыку/радио прямо в CLI;
[+] нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет), и склеивать аудиофайлы;
[+] редактировать документы;
[+] проверять орфографию: как текстовых файлов, так и различных статей по url, например, проверка орфографии статей на Habr-e;
[+] генерировать словари различной сложности со скоростью Си;
[+] создавать блок-схемы; графики; облако слов и даже 3D-визуализацию;
[+] заниматься Data Science на Android-мощностях;
[+] тестировать интернет соединение/интерфейс (требуется частично Root);
[+] сниффить/сканировать сети (требуется частично Root);
[+] запускать и управлять TOR-сетью (deleted);
[+] управлять приложениями и процессами в ОС Android (требуется Root);
[+] анализировать память;
[+] защищать любые данные от случайного редактирования/уничтожения (требуется Root);
[+] автоматически шифровать и бэкапить по ночам любые данные в своё облако;
[+] чекать username(s) и e-mail(s);
[+] проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «сниффить, парсить, брутить, дампить, сканить, фишить»);
[+] работать с электропочтой;
[+] изучать UNIX/shell;
[+] программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
[+] запускать python/php/npm скрипты в т.ч. в одно касание с рабочего стола;
[+] работать с криптографией, стеганографией и цифровыми подписями;
[+] парсить данные;
[*] и даже запускать GNU-GUI-софт из CLI.

Погрузиться в GNU культуру
Всего голосов 28: ↑27 и ↓1+28
Комментарии46

Давайте писать качественный код: важность статического анализа кода

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.2K

Привет, Хабр! Меня зовут Данил. Я frontend-разработчик департамента корпоративных систем ЛАНИТ, который очень любит порядок в коде. На мой взгляд, именно выразительность и чистота кода позволяют ему лучше работать и дольше жить.

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

Читать далее
Всего голосов 46: ↑42 и ↓4+46
Комментарии11

Обзор техник реализации игрового ИИ

Время на прочтение55 мин
Количество просмотров57K
image

Введение


Эта статья познакомит вас с широким диапазоном концепций искусственного интеллекта в играх («игрового ИИ»), чтобы вы понимали, какие инструменты можно использовать для решения задач ИИ, как они работают совместно и с чего можно начать их реализацию в выбранном движке.

Я буду предполагать, что вы знакомы с видеоиграми, немного разбираетесь в таких математических концепциях, как геометрия, тригонометрия и т.д. Большинство примеров кода будет записано псевдокодом, поэтому вам не потребуется знание какого-то конкретного языка.

Что же такое «игровой ИИ»?


Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

  • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
  • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
  • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
  • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии15

Как использовать диаграммы Вороного для управления ИИ

Время на прочтение8 мин
Количество просмотров14K
image

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



Пространственные отношения


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

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



У Вороного есть ответ


Диаграмма Вороного описывает пространственное отношение между близко расположенными точками или их их ближайшими соседями. Это множество соединённых многоугольников, полученных из точек или локаций. Каждая линия «области» Вороного находится посередине между двумя точками.
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии8

Анализ библиотеки ИИ ботов из Quake 3

Время на прочтение4 мин
Количество просмотров6.9K

Изучение исходного кода ИИ уже выпущенных игр — превосходный способ изучения хитростей на реальных примерах. Quake 3 Arena — интересный образец, потому что код игры полностью выложен в открытый доступ (за исключением инструментов), а сама игра стала примером архитектуры движка ИИ на рубеже веков. В коде содержится полнофункциональный ИИ ботов для deathmatch, написанный на старом добром C; если вы понимаете синтаксис языка, изучать его на удивление просто. Наряду с простой архитектурой задач в коде присутствуют серьёзные технологии Area Awareness System (AAS), а также системы поиска пути (или маршрутизации).

Загрузка и установка исходного кода


Исходный код Quake 3 был открыт в 2005 году, поэтому мы можем свободно скачивать кодовую базу при условии соблюдения лицензии GPL. Однако если вы хотите запустить игру, вам понадобятся ассеты, не включённые в состав исходного кода. Можно воспользоваться кодом и ассетами Id Software:

  1. Скачайте полный исходный код Quake 3. Текущая версия имеет номер 1.32b и она совместима с последним патчем.
  2. Чтобы игра заработала со всеми необходимыми ресурсами, то можно использовать её полную версию.
  3. Также есть вероятность того, что можно будет запустить демо-уровни, но это зависит от версии скомпилированного движка. Не забудьте поместить исполняемые файлы в нужную папку.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+7
Комментарии5

Системное мышление на практике: переход от монолита к микрофронтендам и обратно

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров7.9K

Меня зовут Олег, я уже 20 лет работаю в ИТ и в основном на Enterprise-проектах. Сейчас работаю в Альфа-Банке на проекте Альфа-Онлайн и хочу поделиться своим видением управления сложностью на больших проектах.

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

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

Читать далее
Всего голосов 28: ↑27 и ↓1+31
Комментарии15

Информация

В рейтинге
3 627-й
Откуда
Самара, Самарская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Server Administrator, DevOps
Senior
Git
JavaScript
HTML
CSS
Node.js
.NET
C#
SQL
Server administration