Микроархитектура простого нейросетевого ускорителя на SystemC
Привет, Хабр! Меня зовут Михаил Степанов, я инженер-стажер группы функциональной верификации YADRO. Эта статья — логическое продолжение предыдущей, «Простая нейронная сеть на C++». Для лучшего понимания темы рекомендую сначала ознакомиться с ней.
В этих двух статьях я работал с синтетической задачей, решение которой нельзя применить в реальных системах. На всеобъемлющий анализ я не претендую, это просто академическое исследование. Оно поможет понять, с чего начать погружаться в тему ускорения нейросетей.
Читать далее
#нейросетевой_ускоритель #архитектура #микроахритектура #нейронная_сеть #systemc #код_нейронной_сети #c_ | @habr_ai
Привет, Хабр! Меня зовут Михаил Степанов, я инженер-стажер группы функциональной верификации YADRO. Эта статья — логическое продолжение предыдущей, «Простая нейронная сеть на C++». Для лучшего понимания темы рекомендую сначала ознакомиться с ней.
В этих двух статьях я работал с синтетической задачей, решение которой нельзя применить в реальных системах. На всеобъемлющий анализ я не претендую, это просто академическое исследование. Оно поможет понять, с чего начать погружаться в тему ускорения нейросетей.
Читать далее
#нейросетевой_ускоритель #архитектура #микроахритектура #нейронная_сеть #systemc #код_нейронной_сети #c_ | @habr_ai
Хабр
Микроархитектура простого нейросетевого ускорителя на SystemC
Привет, Хабр! Меня зовут Михаил Степанов, я инженер-стажер группы функциональной верификации YADRO . Эта статья — логическое продолжение предыдущей, «Простая нейронная сеть на C++» . Для лучшего...
Калькулятор на персептронах
Привет, Хабр!
В этой дебютной статье мы попробуем создать совершенно бесполезный калькулятор на многослойном персептроне. Что-бы он считал правильно, его необходимо обучить. Этим мы и займемся...
Читать далее
#персептрон #c# | @habr_ai
Привет, Хабр!
В этой дебютной статье мы попробуем создать совершенно бесполезный калькулятор на многослойном персептроне. Что-бы он считал правильно, его необходимо обучить. Этим мы и займемся...
Читать далее
#персептрон #c# | @habr_ai
Хабр
Калькулятор на персептронах
Раньше, что бы лучше освоить язык программирования, в моем кругу общения считалось, что «программист» должен написать свою реализацию «Блокнота», «Калькулятора», «Экселя» и прочего. Конечно освоив...
[Перевод] Клон ChatGPT в 3000 байтах на C, основанный на GPT-2
Эта программа представляет собой свободную от зависимостей реализацию GPT-2. Она загружает матрицу весов и файл BPE из оригинальных файлов TensorFlow, токенизирует вывод при помощи простого энкодера, работающего по принципу частотного кодирования, реализует базовый пакет для линейной алгебры, в котором заключены математические операции над матрицами, определяет архитектуру трансформера, выполняет инференс трансформера, а затем очищает вывод от токенов при помощи BPE-декодера. Всё это — примерно в 3000 байт на C.
Код достаточно эффективно оптимизирован — настолько, что малый GPT-2 на любой современной машине выдаёт отклик всего за несколько секунд. Чтобы этого добиться, я реализовал KV-кэширование и применил эффективный алгоритм перемножения матриц, а также добавил опциональный OMP-параллелизм.
Взяв это за основу, можно создать некий аналог Chat GPT — при условии, что вас не слишком волнует качество вывода (объективно говоря, вывод получается просто ужасный… но решение работает). Здесь есть некоторые глюки (особенно с обработкой символов в кодировке UTF-8), а для эксплуатации модели размером XL с широким контекстным окном может потребоваться ~100 ГБ оперативной памяти. Но, если вы просто набираете текст в кодировке ASCII при помощи малого GPT2, то такая модель должна нормально работать примерно везде.
Я выложил весь код на GitHub, поэтому можете свободно брать его там и экспериментировать с ним.
Читать далее
#gpt #трансформеры #c #нейронные_сети | @habr_ai
Эта программа представляет собой свободную от зависимостей реализацию GPT-2. Она загружает матрицу весов и файл BPE из оригинальных файлов TensorFlow, токенизирует вывод при помощи простого энкодера, работающего по принципу частотного кодирования, реализует базовый пакет для линейной алгебры, в котором заключены математические операции над матрицами, определяет архитектуру трансформера, выполняет инференс трансформера, а затем очищает вывод от токенов при помощи BPE-декодера. Всё это — примерно в 3000 байт на C.
Код достаточно эффективно оптимизирован — настолько, что малый GPT-2 на любой современной машине выдаёт отклик всего за несколько секунд. Чтобы этого добиться, я реализовал KV-кэширование и применил эффективный алгоритм перемножения матриц, а также добавил опциональный OMP-параллелизм.
Взяв это за основу, можно создать некий аналог Chat GPT — при условии, что вас не слишком волнует качество вывода (объективно говоря, вывод получается просто ужасный… но решение работает). Здесь есть некоторые глюки (особенно с обработкой символов в кодировке UTF-8), а для эксплуатации модели размером XL с широким контекстным окном может потребоваться ~100 ГБ оперативной памяти. Но, если вы просто набираете текст в кодировке ASCII при помощи малого GPT2, то такая модель должна нормально работать примерно везде.
Я выложил весь код на GitHub, поэтому можете свободно брать его там и экспериментировать с ним.
Читать далее
#gpt #трансформеры #c #нейронные_сети | @habr_ai
Хабр
Клон ChatGPT в 3000 байтах на C, основанный на GPT-2
Эта программа представляет собой свободную от зависимостей реализацию GPT-2. Она загружает матрицу весов и файл BPE из оригинальных файлов TensorFlow, токенизирует вывод при помощи простого энкодера,...
AI, FreeRTOS и Linux в кармане: возможности LicheeRV Nano
В этой статье речь пойдет о разработке под отладочную плату LicheeRV Nano - компактное устройство размером с две пятирублевые монеты, но обладающее впечатляющими возможностями.
Плата способна одновременно запускать Linux и FreeRTOS, выполнять инференс нейронных сетей (будет разобран запуск YOLO в 100 FPS и LLama2.c) благодаря встоенному NPU с производительностью 1 TOPS, а также управлять периферийными устройствами: GPIO, I2C, UART, SPI, CSI камерой, Wi-Fi, Bluetooth и Ethernet.
Это первая часть статьи, представляющая собой методическое руководство по работе с платой. Во второй части будет рассмотрена разработка полноценного проекта на её основе.
Читать далее
#c_ #linux #электроника #программирование #npu #yolo #yolov8 #робототехника #llm #opencv | @habr_ai
В этой статье речь пойдет о разработке под отладочную плату LicheeRV Nano - компактное устройство размером с две пятирублевые монеты, но обладающее впечатляющими возможностями.
Плата способна одновременно запускать Linux и FreeRTOS, выполнять инференс нейронных сетей (будет разобран запуск YOLO в 100 FPS и LLama2.c) благодаря встоенному NPU с производительностью 1 TOPS, а также управлять периферийными устройствами: GPIO, I2C, UART, SPI, CSI камерой, Wi-Fi, Bluetooth и Ethernet.
Это первая часть статьи, представляющая собой методическое руководство по работе с платой. Во второй части будет рассмотрена разработка полноценного проекта на её основе.
Читать далее
#c_ #linux #электроника #программирование #npu #yolo #yolov8 #робототехника #llm #opencv | @habr_ai
Хабр
AI, FreeRTOS и Linux в кармане: возможности LicheeRV Nano
В этой статье речь пойдет о разработке под отладочную плату LicheeRV Nano - компактное устройство размером с две пятирублевые монеты, но обладающее впечатляющими возможностями. Плата способна...
VSCode, SourceCraft Code Assistant и микроконтроллеры
Сегодня разработка прошивок для микроконтроллеров обычно требует заметно больше времени и ресурсов, чем создание собственно схемы и платы. Со времён ковида прошли времена безраздельного владычества STM32, и теперь регулярно приходится осваивать новые железки. При этом для них зачастую приходится ваять программный инструментарий и библиотеки — поскольку предоставленное производителем обычно неудобно.
В этой статье я расскажу, как использовать VSCode для разработки прошивок под разные архитектуры и как мне в этом помогает SourceCraft Code Assistant от Яндекса.
Читать далее
#vscode #stm32 #gd32 #verilog #ai #makefile #stlink #openocd #c_ #инструкция | @habr_ai
Сегодня разработка прошивок для микроконтроллеров обычно требует заметно больше времени и ресурсов, чем создание собственно схемы и платы. Со времён ковида прошли времена безраздельного владычества STM32, и теперь регулярно приходится осваивать новые железки. При этом для них зачастую приходится ваять программный инструментарий и библиотеки — поскольку предоставленное производителем обычно неудобно.
В этой статье я расскажу, как использовать VSCode для разработки прошивок под разные архитектуры и как мне в этом помогает SourceCraft Code Assistant от Яндекса.
Читать далее
#vscode #stm32 #gd32 #verilog #ai #makefile #stlink #openocd #c_ #инструкция | @habr_ai
Хабр
VSCode, SourceCraft Code Assistant и микроконтроллеры
Сегодня разработка прошивок для микроконтроллеров обычно требует заметно больше времени и ресурсов, чем создание собственно схемы и платы. Со времён ковида прошли времена безраздельного...
Виноград, Фурье и немного наивности: 4 подхода к реализации сверток с простыми примерами
Привет, Хабр! Меня зовут Кирилл Колодяжный, я работаю в YADRO и продолжаю изучать машинное обучение на С++. Я уже писал, как реализовать модели для распознавания лиц на фото и для поиска объекта в пространстве с помощью computer vision. Ссылки на материалы ищите в конце статьи.
Сегодня затрону «математическую» тему и расскажу о реализации сверток: что это за операция и какие есть алгоритмы для вычисления. Приведу простые примеры с кодом, чтобы вы могли опробовать решения.
У статьи будет вторая часть: про особенности реализации одного из этих алгоритмов с использованием CUDA в рамках фреймворка PyTorch и про то, как адаптировать его под свои задачи.
Читать далее
#convolution #gpu #c_ #machine_learning | @habr_ai
Привет, Хабр! Меня зовут Кирилл Колодяжный, я работаю в YADRO и продолжаю изучать машинное обучение на С++. Я уже писал, как реализовать модели для распознавания лиц на фото и для поиска объекта в пространстве с помощью computer vision. Ссылки на материалы ищите в конце статьи.
Сегодня затрону «математическую» тему и расскажу о реализации сверток: что это за операция и какие есть алгоритмы для вычисления. Приведу простые примеры с кодом, чтобы вы могли опробовать решения.
У статьи будет вторая часть: про особенности реализации одного из этих алгоритмов с использованием CUDA в рамках фреймворка PyTorch и про то, как адаптировать его под свои задачи.
Читать далее
#convolution #gpu #c_ #machine_learning | @habr_ai
Хабр
Виноград, Фурье и немного наивности: 4 подхода к реализации сверток с простыми примерами
Привет, Хабр! Меня зовут Кирилл Колодяжный, я работаю в YADRO и продолжаю изучать машинное обучение на С++. Я уже писал, как реализовать модели для распознавания лиц на фото и для поиска объекта в...
«Куб → Город: школьный игровой движок и зрячий ИИ-копилот»
Можно ли создать свой движок на Vulkan в 13 лет и обучить ИИ, который сам дорисует сцену по одному кубику?
Спойлер: да. Это история школьного геймдева, которая началась с Blender в 7 лет и выросла в MIA Engine NEO — движок с собственной ECS, Vision-CNN и LLM-копилотом. Никакой Unity, только VkPipelineBarrier и мечта «один куб → целый мир». Читать далее
#c_ #игры #ребенок #геймдев #своими_руками #игровые_движки #vision_ai #генерация_сцен #llm | @habr_ai
Можно ли создать свой движок на Vulkan в 13 лет и обучить ИИ, который сам дорисует сцену по одному кубику?
Спойлер: да. Это история школьного геймдева, которая началась с Blender в 7 лет и выросла в MIA Engine NEO — движок с собственной ECS, Vision-CNN и LLM-копилотом. Никакой Unity, только VkPipelineBarrier и мечта «один куб → целый мир». Читать далее
#c_ #игры #ребенок #геймдев #своими_руками #игровые_движки #vision_ai #генерация_сцен #llm | @habr_ai
Хабр
«Куб → Город: школьный игровой движок и зрячий ИИ-копилот»
Обратите внимание: этот материал публикуется впервые и ранее нигде не размещался, включая личные блоги, социальные сети и другие платформы. Пролог на 3 033 знака (да, я посчитал) Меня зовут Владимир...
Язык Julia: что это и почему он популярен в научных вычислениях
Согласно индексу TIOBE, Julia входит в топ-50 самых актуальных языков программирования в 2025 году и занимает в рейтинге 34-ю строчку.
Julia получил признание благодаря универсальности, скорости, понятному синтаксису и множеству других достоинств, о которых мы расскажем в статье. Этот идеальный вариант для научных вычислений в любых отраслях — от анализа огромных массивов данных до расчетов прочности архитектурных объектов.
Узнаем, каковы особенности и преимущества языка программирования Julia, почему он популярен в научных вычислениях, чем отличается от других топовых языков и где применяется. Читать далее
#c #инструменты #производительность #big_data #python #машинное_обучение #hf #работа_в_it | @habr_ai
Согласно индексу TIOBE, Julia входит в топ-50 самых актуальных языков программирования в 2025 году и занимает в рейтинге 34-ю строчку.
Julia получил признание благодаря универсальности, скорости, понятному синтаксису и множеству других достоинств, о которых мы расскажем в статье. Этот идеальный вариант для научных вычислений в любых отраслях — от анализа огромных массивов данных до расчетов прочности архитектурных объектов.
Узнаем, каковы особенности и преимущества языка программирования Julia, почему он популярен в научных вычислениях, чем отличается от других топовых языков и где применяется. Читать далее
#c #инструменты #производительность #big_data #python #машинное_обучение #hf #работа_в_it | @habr_ai
Хабр
Язык Julia: что это и почему он популярен в научных вычислениях
Согласно индексу TIOBE , Julia входит в топ-50 самых актуальных языков программирования в 2025 году и занимает в рейтинге 34-ю строчку. Julia получил признание благодаря универсальности,...
ML на «плюсах»: 5 материалов о необычном подходе к обучению моделей
Когда мы говорим о машинном обучении, то автоматически подразумевает Python. Это справедливо: на Python есть множество удобных ML-инструментов, например, популярная библиотека PyTorch. Тем не менее, некоторые задачи можно решать с помощью С++. И не только ради эксперимента, а для увеличения производительности сервисов и упрощения работы с кодом.
Кирилл Колодяжный, разработчик СХД в YADRO, несколько лет изучает машинное обучение на С++. Он уже написал программы для поиска лица на фото и для распознавания объектов в реальном времени. Под катом — пять материалов Кирилла, после которых инженерам захочется «пересесть» с Python на C++. Хотя бы на время. Читать далее
#c_ #машинное_обучение #свертки #pytorch #yolo #компьютерное_зрение #face_detection | @habr_ai
Когда мы говорим о машинном обучении, то автоматически подразумевает Python. Это справедливо: на Python есть множество удобных ML-инструментов, например, популярная библиотека PyTorch. Тем не менее, некоторые задачи можно решать с помощью С++. И не только ради эксперимента, а для увеличения производительности сервисов и упрощения работы с кодом.
Кирилл Колодяжный, разработчик СХД в YADRO, несколько лет изучает машинное обучение на С++. Он уже написал программы для поиска лица на фото и для распознавания объектов в реальном времени. Под катом — пять материалов Кирилла, после которых инженерам захочется «пересесть» с Python на C++. Хотя бы на время. Читать далее
#c_ #машинное_обучение #свертки #pytorch #yolo #компьютерное_зрение #face_detection | @habr_ai
Хабр
ML на «плюсах»: 5 материалов о необычном подходе к обучению моделей
Когда мы говорим о машинном обучении, то автоматически подразумеваем Python. Это справедливо: на Python есть множество удобных ML-инструментов, например, популярная библиотека PyTorch. Тем не...
Каждому сотруднику по личному помощнику: как мы подружились с AI-ревью
Вы любите делать код-ревью?
«Не могу дождаться следующего PR!», — ответит абсолютно никто.
Понимаю! Ревью — штука необходимая, но давайте честно: утомляет, забирает время и ресурс, который можно потратить на другие задачи. Делегировать, казалось бы, хорошая идея… но кому? Личного ревьюера на полную ставку ни у кого нет.
Меня зовут Александр Федотов, я руководитель группы разработки в «Лаборатории Касперского». В своей команде я уже не раз пытался упростить ревью: менял подходы, вводил правила, подключал автоматизацию. Но все равно ощущение такое, что можно сделать еще лучше. Тем временем, коллеги реализовали интеграцию Azure DevOps с внутренней AI-моделью ЛК. И вот одним морозным зимним днем, во время настройки каких-то доступов, я попал в раздел Manage Features, где наткнулся на неприметный пунктик Pull Request AI, который позволял воспользоваться преимуществами этой интеграции.
Не теряя времени, я активировал фичу и стал счастливым обладателем раздела AI в каждом PR. С тех пор ревью стало другим. И теперь я не просто верю в автоматизацию — я ею пользуюсь и хочу поделиться с вами своими мыслями об этом. Читать далее
#ai #codereview #pull_request #c_ #c# #azure_devops | @habr_ai
Вы любите делать код-ревью?
«Не могу дождаться следующего PR!», — ответит абсолютно никто.
Понимаю! Ревью — штука необходимая, но давайте честно: утомляет, забирает время и ресурс, который можно потратить на другие задачи. Делегировать, казалось бы, хорошая идея… но кому? Личного ревьюера на полную ставку ни у кого нет.
Меня зовут Александр Федотов, я руководитель группы разработки в «Лаборатории Касперского». В своей команде я уже не раз пытался упростить ревью: менял подходы, вводил правила, подключал автоматизацию. Но все равно ощущение такое, что можно сделать еще лучше. Тем временем, коллеги реализовали интеграцию Azure DevOps с внутренней AI-моделью ЛК. И вот одним морозным зимним днем, во время настройки каких-то доступов, я попал в раздел Manage Features, где наткнулся на неприметный пунктик Pull Request AI, который позволял воспользоваться преимуществами этой интеграции.
Не теряя времени, я активировал фичу и стал счастливым обладателем раздела AI в каждом PR. С тех пор ревью стало другим. И теперь я не просто верю в автоматизацию — я ею пользуюсь и хочу поделиться с вами своими мыслями об этом. Читать далее
#ai #codereview #pull_request #c_ #c# #azure_devops | @habr_ai
Хабр
Каждому сотруднику по личному помощнику: как мы подружились с AI-ревью
Вы любите делать код-ревью? «Не могу дождаться следующего PR!», — ответит абсолютно никто. Понимаю! Ревью — штука необходимая, но давайте честно: утомляет, забирает время и ресурс, который можно...
Метапрограммирование 2.0: макросы и генерация кода в современном мире
Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки.
В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом. Читать дальше →
#ruvds_статьи #метапрограммирование #генерация_кода #макросы #code_generation #rust #java #c_ #metaprogramming #шаблонный_код | @habr_ai
Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки.
В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом. Читать дальше →
#ruvds_статьи #метапрограммирование #генерация_кода #макросы #code_generation #rust #java #c_ #metaprogramming #шаблонный_код | @habr_ai
Хабр
Метапрограммирование 2.0: макросы и генерация кода в современном мире
Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически...
OpenWorm: цифровая модель червя-нематоды в браузере
Крошечная нематода, или круглый червь Caenorhabditis elegans длиной около миллиметра — один из самых изученных организмов на Земле. Это первый многоклеточный организм, геном которого был полностью секвенирован. У C. elegans два пола — самцы и гермафордиты. Взрослая гермафордитная особь состоит всего из 959 клеток, а её нервная система — из 302 нейронов. Все связи между нейронами C. elegans (коннектом) также полностью описаны. Обилие всесторонней научной информации об этом черве и относительная простота его устройства несколько лет назад вдохновили сотрудников лаборатории моделирования сложных систем института систем информатики имени А. П. Ершова СО РАН создать исчерпывающую компьютерную модель C. elegans.
Со временем проект привлёк несколько десятков участников по всему миру, однако продолжал оставаться малоизвестным и недоступным для широкой публики: не так-то просто разобраться в том обилии исходных данных, касающихся устройства червя, и множестве подсистем модели, написанных на разных языках программирования, не говоря уже о том, чтобы установить и запустить всё это у себя на компьютере. В то же время, C. elegans широко используется при изучении биологии, и возможность «погонять» модель червя, с подробностями и в динамике рассмотреть, как он устроен, трудно переоценить. Поэтому команда проекта решила сделать модель доступной онлайн — чтобы любой желающий смог просто зайти на сайт проекта и заглянуть в «матрицу» в которой обитает виртуальный организм. В этом и заключается суть проекта OpenWorm на Кикстартере.
Читать дальше →
#openworm #c_elegans #caenorhabditis_elegans | @habr_ai
Крошечная нематода, или круглый червь Caenorhabditis elegans длиной около миллиметра — один из самых изученных организмов на Земле. Это первый многоклеточный организм, геном которого был полностью секвенирован. У C. elegans два пола — самцы и гермафордиты. Взрослая гермафордитная особь состоит всего из 959 клеток, а её нервная система — из 302 нейронов. Все связи между нейронами C. elegans (коннектом) также полностью описаны. Обилие всесторонней научной информации об этом черве и относительная простота его устройства несколько лет назад вдохновили сотрудников лаборатории моделирования сложных систем института систем информатики имени А. П. Ершова СО РАН создать исчерпывающую компьютерную модель C. elegans.
Со временем проект привлёк несколько десятков участников по всему миру, однако продолжал оставаться малоизвестным и недоступным для широкой публики: не так-то просто разобраться в том обилии исходных данных, касающихся устройства червя, и множестве подсистем модели, написанных на разных языках программирования, не говоря уже о том, чтобы установить и запустить всё это у себя на компьютере. В то же время, C. elegans широко используется при изучении биологии, и возможность «погонять» модель червя, с подробностями и в динамике рассмотреть, как он устроен, трудно переоценить. Поэтому команда проекта решила сделать модель доступной онлайн — чтобы любой желающий смог просто зайти на сайт проекта и заглянуть в «матрицу» в которой обитает виртуальный организм. В этом и заключается суть проекта OpenWorm на Кикстартере.
Читать дальше →
#openworm #c_elegans #caenorhabditis_elegans | @habr_ai
Хабр
OpenWorm: цифровая модель червя-нематоды в браузере
Крошечная нематода, или круглый червь Caenorhabditis elegans длиной около миллиметра — один из самых изученных организмов на Земле. Это первый многоклеточный организм, геном которого был полностью...
«Письмо турецкому султану» или линейная регрессия на C# с помощью Accord.NET для анализа открытых данных Москвы
Когда речь идет об освоении самых основ машинного обучения, чаще всего предлагается изучить соответствующие инструменты на Python или R. Мы не будем обсуждать их плюсы и минусы, а просто зададимся вопросом, что делать если вы знакомы только с экосистемой .NET, но при этом вам очень любопытно окунутся в мир науки о данных? Ответ прост, не отчаиваться и посмотреть в сторону F#, а если вы также, как и я из .NET знаете только азы C#, то попробовать изучить Accord.NET Framework.
Мы с вами уже разбирали его применение для решения задачи классификации, а в этот раз попробуем рассмотреть простейший инструментарий для линейной регрессии. Для этого мы воспользуемся открытыми данными по анализу обращений граждан взятыми с официального сайта Мэра Москвы.
Несмотря на то, что в заголовке статьи указан C#, мы попробуем собрать код и на VB.NET.
Мне осталось только пригласить вас под кат!
Читать дальше →
#_net #accord_net #c# #машинное_обучение #data_science #vb_net #линейная_регрессия | @habr_ai
Когда речь идет об освоении самых основ машинного обучения, чаще всего предлагается изучить соответствующие инструменты на Python или R. Мы не будем обсуждать их плюсы и минусы, а просто зададимся вопросом, что делать если вы знакомы только с экосистемой .NET, но при этом вам очень любопытно окунутся в мир науки о данных? Ответ прост, не отчаиваться и посмотреть в сторону F#, а если вы также, как и я из .NET знаете только азы C#, то попробовать изучить Accord.NET Framework.
Мы с вами уже разбирали его применение для решения задачи классификации, а в этот раз попробуем рассмотреть простейший инструментарий для линейной регрессии. Для этого мы воспользуемся открытыми данными по анализу обращений граждан взятыми с официального сайта Мэра Москвы.
Несмотря на то, что в заголовке статьи указан C#, мы попробуем собрать код и на VB.NET.
Мне осталось только пригласить вас под кат!
Читать дальше →
#_net #accord_net #c# #машинное_обучение #data_science #vb_net #линейная_регрессия | @habr_ai
Хабр
«Письмо турецкому султану» или линейная регрессия на C# с помощью Accord.NET для анализа открытых данных Москвы
Когда речь идет об освоении самых основ машинного обучения, чаще всего предлагается изучить соответствующие инструменты на Python или R . Мы не будем обсуждать их плюсы и минусы, а просто зададимся...
[Перевод] Создаем плагин с генеративным ИИ для Unreal Engine на C++ (офлайн и онлайн версии)
Вы когда‑нибудь задумывались о том, как здорово было бы, чтобы в вашей игре происходили настоящие человеческие диалоги? Представьте себе систему диалогов NPC, которая кажется невероятно реалистичной, или нарратора, который моментально реагирует на действия игроков. А может быть, вам нужен инструмент, способный генерировать уникальный контент «на лету» прямо в игре? Вне зависимости от того, создаете ли вы одиночную или многопользовательскую игру, внедрение генеративного искусственного интеллекта может сделать ваше творение намного интереснее и динамичнее. В этом руководстве я поделюсь с вами пошаговой инструкцией того, как это можно воплотить в вашем проекте. Читать далее
#unreal_engine #c_ #ue5_plugin #uclass #blueprintfunctionlibrary #fhttpmodule #ihttprequest #ihttpresponse #jsonobjectconverter | @habr_ai
Вы когда‑нибудь задумывались о том, как здорово было бы, чтобы в вашей игре происходили настоящие человеческие диалоги? Представьте себе систему диалогов NPC, которая кажется невероятно реалистичной, или нарратора, который моментально реагирует на действия игроков. А может быть, вам нужен инструмент, способный генерировать уникальный контент «на лету» прямо в игре? Вне зависимости от того, создаете ли вы одиночную или многопользовательскую игру, внедрение генеративного искусственного интеллекта может сделать ваше творение намного интереснее и динамичнее. В этом руководстве я поделюсь с вами пошаговой инструкцией того, как это можно воплотить в вашем проекте. Читать далее
#unreal_engine #c_ #ue5_plugin #uclass #blueprintfunctionlibrary #fhttpmodule #ihttprequest #ihttpresponse #jsonobjectconverter | @habr_ai
Хабр
Создаем плагин с генеративным ИИ для Unreal Engine на C++ (офлайн и онлайн версии)
Вы когда‑нибудь задумывались о том, как здорово было бы, чтобы в вашей игре происходили настоящие человеческие диалоги? Представьте себе систему диалогов NPC, которая кажется...
Повстанцы бессмертия: Как банда безумцев превратила смерть из судьбы в выбор
Они называли их безумцами. Сегодня — у них бюджеты в миллиарды. Генная терапия, химическое перепрограммирование, эпигенетика — это уже не фантастика, а клиника. В 2025 году человечество в упор смотрит на смерть... и начинает дёргать её за бороду.
Это манифест повстанцев бессмертия. История тех, кто отказался стареть. Читать далее
#ipsc #oct4 #sox2 #klf4 #c_myc #биоинформатика #биотехнологии #генетика #молекулярная_биология #sens | @habr_ai
Они называли их безумцами. Сегодня — у них бюджеты в миллиарды. Генная терапия, химическое перепрограммирование, эпигенетика — это уже не фантастика, а клиника. В 2025 году человечество в упор смотрит на смерть... и начинает дёргать её за бороду.
Это манифест повстанцев бессмертия. История тех, кто отказался стареть. Читать далее
#ipsc #oct4 #sox2 #klf4 #c_myc #биоинформатика #биотехнологии #генетика #молекулярная_биология #sens | @habr_ai
Хабр
Повстанцы бессмертия: Как банда безумцев превратила смерть из судьбы в выбор
Они называли их сумасшедшими. Шарлатанами. Еретиками, посягнувшими на божественный порядок вещей. В 2005 году журнал MIT Technology Review предложил $20,000 любому, кто сможет опровергнуть подход...
Алиса, подвинься
Попробуем создать ИИ ассистента на C#, используя модель QVikhr-2.5-1.5B-Instruct-r-Q8_0 весом 1,53Гб на компьютере с процессором из 2012 года. В комплекте: Function Calling, RAG, и море страданий. Читать далее
#c# #llm | @habr_ai
Попробуем создать ИИ ассистента на C#, используя модель QVikhr-2.5-1.5B-Instruct-r-Q8_0 весом 1,53Гб на компьютере с процессором из 2012 года. В комплекте: Function Calling, RAG, и море страданий. Читать далее
#c# #llm | @habr_ai
Хабр
Алиса, подвинься
Статья обзорная, для динозавров, которые только сейчас очнулись из беспросветного сна неведения. Таким динозавром собственно являюсь я сам. Все термины, описание, мыслеформы и прочее, никак не...
QapGen: Создаём мощные парсеры на C++
QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора кода программ, значительно упрощая разработку компиляторов/анализаторов/трансляторов.
QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).
Основные фишки QapDSLv2 + QapGen — это:
1) Отсутствие этапа токенизации — дерево лексеров разбивает входной поток на лексемы и сохраняет их в строго типизированных древовидных С++ структурах пропуская этап токенизации.
2) Генерация оптимизированного кода полиморфных лексеров.
3) Полное сохранение всех лексем(даже разделители сохраняются, такие как пробелы/переходы на новую строку и комментарии) в результирующем дереве.
4) Возможность сохранить как оригинальное дерево, так и модифицированное обратно в код/текст без потери разделителей/комментариев.
5) Автоматическая генерация кода посетителей(это такой паттерн проектирования).
А теперь пример самой сочной части(рекурсивно самоописывающийся код):
structt_target_struct:i_target_item{
structt_keyword{
stringkw=any_str_from_vec(split("struct,class",","));
" "? // optional separator
};
structt_body_semicolon:i_struct_impl{";"};
structt_body_impl:i_struct_impl{
"{" // жрём скобочку
vectornested?; //рекурсия!
" "?
vectorarr?; // парсим поля
" "?
TAutoPtrc?; // остальной С++ код
" "?
"}"
};
structt_parent{
stringa_or_c=any_str_from_vec(split("=>,:",","));
" "?
t_namename;
};
//точка входа в парсер:
TAutoPtrkw?; //парсимstruct/class
t_namename; //парсим имя
" "?
TAutoPtrparent?;
" "?
TAutoPtrbody;
}; Читать далее
#parser #parser_generator #lexers #c_ #tree #ast #gamedev #dsl #compiler | @habr_ai
QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора кода программ, значительно упрощая разработку компиляторов/анализаторов/трансляторов.
QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).
Основные фишки QapDSLv2 + QapGen — это:
1) Отсутствие этапа токенизации — дерево лексеров разбивает входной поток на лексемы и сохраняет их в строго типизированных древовидных С++ структурах пропуская этап токенизации.
2) Генерация оптимизированного кода полиморфных лексеров.
3) Полное сохранение всех лексем(даже разделители сохраняются, такие как пробелы/переходы на новую строку и комментарии) в результирующем дереве.
4) Возможность сохранить как оригинальное дерево, так и модифицированное обратно в код/текст без потери разделителей/комментариев.
5) Автоматическая генерация кода посетителей(это такой паттерн проектирования).
А теперь пример самой сочной части(рекурсивно самоописывающийся код):
structt_target_struct:i_target_item{
structt_keyword{
stringkw=any_str_from_vec(split("struct,class",","));
" "? // optional separator
};
structt_body_semicolon:i_struct_impl{";"};
structt_body_impl:i_struct_impl{
"{" // жрём скобочку
vectornested?; //рекурсия!
" "?
vectorarr?; // парсим поля
" "?
TAutoPtrc?; // остальной С++ код
" "?
"}"
};
structt_parent{
stringa_or_c=any_str_from_vec(split("=>,:",","));
" "?
t_namename;
};
//точка входа в парсер:
TAutoPtrkw?; //парсимstruct/class
t_namename; //парсим имя
" "?
TAutoPtrparent?;
" "?
TAutoPtrbody;
}; Читать далее
#parser #parser_generator #lexers #c_ #tree #ast #gamedev #dsl #compiler | @habr_ai
Хабр
QapGen: Создаём мощные парсеры на C++
QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора, значительно упрощая разработку компиляторов и анализаторов. QapGen —...
Я объявляю «войну» интеллекту… человеческому. Часть 1. (из цикла бесед с ИИ)
Это не мы такие – жизнь такая. Это не я объявляю «войну», а искусственный интеллект (ИИ), который является главным участником беседы. Я лишь «передатчик» и в малой мере - интервьюер. А ИИ, отвечая на вопросы, своим корректным поведением, логикой, знаниями, рассуждением и выводами подает пример «интеллекту человеческому». Вам, прочитавшим диалог, не будет ли стыдно за поведение, за свои выводы, за отношение к таким же, как вы… Вольно или нет, но ИИ объявляет «войну» серости и хамству, высокомерию и чванству, низкой культуре и безграмотности. Всему тому, что, порой, приводит к самой настоящей войне. Будьте добрее, вежливее, логичнее, уважительнее и «войны» отступят, т.к. в них не будет смысла. Вместо них будет… А, что будет, - «жизнь покажет и жизнь рассудит». Короче, – давайте жить дружно! Читать далее
#ии #автоматное_программирование #esp32 #c_ #параллелизм | @habr_ai
Это не мы такие – жизнь такая. Это не я объявляю «войну», а искусственный интеллект (ИИ), который является главным участником беседы. Я лишь «передатчик» и в малой мере - интервьюер. А ИИ, отвечая на вопросы, своим корректным поведением, логикой, знаниями, рассуждением и выводами подает пример «интеллекту человеческому». Вам, прочитавшим диалог, не будет ли стыдно за поведение, за свои выводы, за отношение к таким же, как вы… Вольно или нет, но ИИ объявляет «войну» серости и хамству, высокомерию и чванству, низкой культуре и безграмотности. Всему тому, что, порой, приводит к самой настоящей войне. Будьте добрее, вежливее, логичнее, уважительнее и «войны» отступят, т.к. в них не будет смысла. Вместо них будет… А, что будет, - «жизнь покажет и жизнь рассудит». Короче, – давайте жить дружно! Читать далее
#ии #автоматное_программирование #esp32 #c_ #параллелизм | @habr_ai
Хабр
Я объявляю «войну» интеллекту… человеческому. Часть 1. (из цикла бесед с ИИ)
Предисловие Это не мы такие – жизнь такая. Это не я объявляю «войну», а искусственный интеллект (ИИ), который является главным участником беседы. Я лишь «передатчик» и в малой мере - интервьюер. А ИИ,...
[Перевод] С чего начать изучение ИИ: лучшие языки программирования в 2025 году
Команда AI for Devs подготовила перевод статьи о том, какие языки программирования для ИИ стоит учить в 2025 году. TL;DR: Python остаётся стартовой точкой, C++ берёт на себя критические по производительности задачи, JavaScript и TypeScript открывают путь к ИИ прямо в браузере, Java удерживает корпоративный сектор, а Go обеспечивает лёгкость продакшн-развёртывания. Читать далее
#python #c_ #javascript #typescript #java #julia #r #go #llm #экосистема | @habr_ai
Команда AI for Devs подготовила перевод статьи о том, какие языки программирования для ИИ стоит учить в 2025 году. TL;DR: Python остаётся стартовой точкой, C++ берёт на себя критические по производительности задачи, JavaScript и TypeScript открывают путь к ИИ прямо в браузере, Java удерживает корпоративный сектор, а Go обеспечивает лёгкость продакшн-развёртывания. Читать далее
#python #c_ #javascript #typescript #java #julia #r #go #llm #экосистема | @habr_ai
Хабр
С чего начать изучение ИИ: лучшие языки программирования в 2025 году
Команда AI for Devs подготовила перевод статьи о том, какие языки программирования для ИИ стоит учить в 2025 году. TL;DR: Python остаётся стартовой точкой, C++ берёт на себя критические по...
[Перевод] Я заменил диалоги в Animal Crossing на нейросеть, взломав память GameCube
Animal Crossing. Прославившаяся своей обаятельной, но в конечном счёте до боли повторяющейся болтовнёй. Вновь запустив этот классический хит для GameCube, я ужаснулся... жители по‑прежнему твердят те же самые фразы, что и двадцать три года назад. Ну уж нет, пора это менять.
Проблема? Игра работает на Nintendo GameCube — консоли 24-летней давности с процессором PowerPC на 485 МГц, 24 мегабайтами оперативки и полным отсутствием интернета. Она была создана — и технически, и концептуально — как замкнутый остров в офлайне.
И вот история о том, как я протянул кабель от 2001-го в сегодняшний день, заставив винтажную приставку разговаривать с облачным ИИ, не изменив ни строчки кода оригинальной игры. Читать далее
#animal_crossing #llm #gamecube #nintendo #c #python #dolphin | @habr_ai
Animal Crossing. Прославившаяся своей обаятельной, но в конечном счёте до боли повторяющейся болтовнёй. Вновь запустив этот классический хит для GameCube, я ужаснулся... жители по‑прежнему твердят те же самые фразы, что и двадцать три года назад. Ну уж нет, пора это менять.
Проблема? Игра работает на Nintendo GameCube — консоли 24-летней давности с процессором PowerPC на 485 МГц, 24 мегабайтами оперативки и полным отсутствием интернета. Она была создана — и технически, и концептуально — как замкнутый остров в офлайне.
И вот история о том, как я протянул кабель от 2001-го в сегодняшний день, заставив винтажную приставку разговаривать с облачным ИИ, не изменив ни строчки кода оригинальной игры. Читать далее
#animal_crossing #llm #gamecube #nintendo #c #python #dolphin | @habr_ai
Хабр
Я заменил диалоги в Animal Crossing на нейросеть, взломав память GameCube
Animal Crossing. Прославившаяся своей обаятельной, но в конечном счёте до боли повторяющейся болтовнёй. Вновь запустив этот классический хит для GameCube, я ужаснулся... жители...