Comments 12
Вопрос без ехидства и на полном серьёзе. Почему Python используют только для создания LLM, но в других решениях (прото-ИИ) используют Asm/C/C++/Rust. Просто хочу понять для себя, как рассуждение
Это язык для быстрого прототипирования непрограммистами, на котором есть среды типа jupyter notebook, который заменил интерактивные среды языков типа Maple и R.
На продакшне на первый план выходит уже производительность (впрочем, я не нашёл более оптимизированных решений для запуска генеративных изобразительных моделей чем проекты на python типа ComfyUI; проект stable-diffusion.cpp разочаровал меня в разы меньшей скоростью даже после всех оптимизаций, которые я нашёл и задействовал).
stable-diffusion.cpp это проект основанный на проекте https://github.com/ggml-org/ggml в котором делают акцент на использование процессора в первую очередь, а видеоускорители добавляются для галочки (чаще для тех случаев когда они не поддерживаются мейнстрим или в них не достаточно ресурсов, например видеопамяти, или что главное, используется не стандартное оборудование), т.е. если начнете сравнивать работу классических python алгоритмов но при работе на процессоре, то заметите заметную разницу в скорости.
Довольно ценное замечание.
Впрочем, странно что они не занимались видеокартами так же упорно, как в других проектах - ведь именно они дают львиную часть производительности.
Значит, можно ожидать что есть неиспользуемый потенциал для роста и существующие оболочки для запуска SDXL и других архитектур рано или поздно ускорят ещё сильнее, чем есть сейчас.
Причин на самом деле немало. Низкоуровневые языки дают полный контроль над памятью, потоками, железом и временем выполнения. Встроенные системы (embedded) не имеют интерпретатора Python - в таких условиях приходится писать на C или Rust, чтобы код запускался прямо на микроконтроллере. Далее, Python-тулчейн тяжёлый. Даже простая модель на Python требует гигабайты зависимостей, а Rust/C позволяют сделать всё компактным и более энергоэффективным.
Посмотрите, например, Указатели в Python: в чём суть? - там очень популярно и понятно объясняется разница между обычной переменной в C и в Python и какие накладные расходы получаются при обычной операции x=1 и x+=1 , и такие проблемы у всех скриптовых языков, даже если их транслировать в машинный код или перевести на C и откомпилировать. Становится понятно, почему Astral, переписав на Rust некоторые инструменты, получила рост производительности на порядки. Производительность для LLM не деградирует сильно только из за того что блоки данных, обрабатываемые специализированными библиотеками, намного больше чем данные, обрабатываемые самим питоном.
Скорость работы — не проблема:
Скорость python - это огромная проблема, и направление развития языка противоречиво - одни пускают слухи о работе над производительностью, другие не считают это приоритетом. Хотя язык развивается крошечной командой разработчиков, на пожертвованные средства, а используется всеми включая крупнейшие корпорации. Есть в этом некое противоречие.
Почему Python
Во первых: Spark/Databriks.
Во вторых: https://www.coursera.org/specializations/deep-learning сам брал для базы, или новее.
Главное преимущество питона - экосистема
Всё остальное вторично
Она, экосистема, "наросла" не сама по себе. Нас, аналитиков и датасатанистов, десятилетиями дружно отговаривали старшие товарищи от "ужасно медленного Питона". Но случились три чуда:
Python интерпретируемый, и вышел IPython и Pandas и "змей"-искуситель внезапно взял да и массово потеснил все похожие заслуженные инструменты типа MatLab, R, Maple, Wolfram. В академсреде не ведут чартов, но даже ее, глухо консервативную, обаял простой синтаксис срезов и структур данных.
Затем был написан Jupyter, притянувший Markdown, быстрый Tornado и вездесущие браузеры. Стало ясно что документ-исследование может быть насквозь исполнимым кодом и самообновляться по требованию под новые входные данные, а писать этот код можно весело вчетвером в одном файле, одновременно, и для этого на любом ПК не нужно вообще ничего, кроме браузера.
Снизу, со стороны консольных админскриптов в Питон медленно подтянулась инженерная братия, вкусив удобства и открытость IDE для их правки (с bash/bat/ps многие ли используют IDE?). И эта поддержка вылилась в мощную промышленную основу конфигурирования докеров, оркестрации, CI/CD, облачных сервисов.
В результате выросла здоровая экосистема из разнородных специалистов, дружелюбная и открытая. 500k свободных библиотек, хорошая ИИ-насмотренность, возможность получения 100% рабочего кода при аккуратном промптинге - это то на чем покоится нынешняя уверенность пользователей. Волшебного в языке ничего нет, просто повезло.
Забавно, но код работает только для обучения логике AND и OR. Если же попробовать научить его XOR получаем:
После обучения:
[0, 0] → 0.503 (целевое 0)
[0, 1] → 0.500 (целевое 1)
[1, 0] → 0.497 (целевое 1)
[1, 1] → 0.494 (целевое 0)
Есть мысли с чем это связано?
Почему Python стал языком нейросетей и как это работает на практике