LINUX.ORG.RU

А зачем решать эту задачу на C++? Я могу представить себе только две ниши, где вызов питонокода может кого-то не устроить: 1) модель должна выполняться на CPU, но при этом важна скорость работы; 2) требуется не только скорость, но и минимальная латентность.

annulen ★★★★★
()
Ответ на: комментарий от Esper

Только если совсем уж терминальная стадия ФГМ, при которой поциент не в состоянии взять с полки Boost.Python и вызывать питонью библиотеку из своего плюсового кода.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Есть большой проект на C++. Можно конечно и python прикрутить. Но зачем, если можно этого не делать? Потому что легче? А оптимизировать давно уже не модно?

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

Но зачем, если можно этого не делать?

Можно задать встречный вопрос: зачем писать код на С++, если можно этого не делать?

Потому что легче? А оптимизировать давно уже не модно?

«Оптимизация» без четко обозначенной цели - это рак, а не оптимизация. В лучшем случае будет потрачено время разработчика, в худшем - код станет менее понятным и сложным в поддержке.

annulen ★★★★★
()
Ответ на: комментарий от annulen

«Оптимизация» без четко обозначенной цели - это рак, а не оптимизация

Мдааа, по итогу получаем херову гору сайтов, умудряющихся тормозить на i7.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

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

annulen ★★★★★
()
Ответ на: комментарий от annulen

Тормозят, потому что вебщикам вообще фиолетово на структуры данных и сложность. А спрос - это вообще не техническая причина. Если ты мне тут про рынок/спрос задвигать собираешься, то сразу лесом.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

Тормозят, потому что вебщикам вообще фиолетово на структуры данных и сложность

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

annulen ★★★★★
()
Ответ на: комментарий от annulen

Сайты тормозят, потому что их хозяева хотят кучу ненужных свистелок и анимаций

Ты понимаешь, что при реализации этих эффектов на низкоуровневом языке все бы летало на компе 2005 года?

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

Гыгыгы. Анимации аппаратно ускорены (по крайней мере в мейнстримовых браузерах), тормоза во многом идут от десятков ненужных перестроек DOM и выполнения тонны стороннего кода от всяких рекламных трекеров, следящих за пользователями и т.д.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Есть такое, но это не имеет отношение к ЯП и оптимизации

Конечно не имеет, ведь хитрожопые маркетологи сделали JS и движок браузера промышленным стандартом.

Но вот у меня есть выбор. И свобода выбирать.

Кстати то, что js - говно и не устраивает, говорят такие события, как появление TS и WebAssembly. Последнее - блин это вообще нонсенс. Типа хотите, чтобы можно было писать на вашем любимом языке и чтобы быстро работало в браузере, тогда берите WebAssembly. Да еп же ш вашу мать, может просто взять сразу свой любимый язык без браузерной прокладки?

rumgot ★★★★★
() автор топика
Ответ на: комментарий от annulen

Анимации аппаратно ускорены (по крайней мере в мейнстримовых браузерах)

Да, так говорят. Однако тормозит же и памяти жрет.

тормоза во многом идут от десятков ненужных перестроек DOM и выполнения тонны стороннего кода от всяких рекламных трекеров, следящих за пользователями и т.д.

Ой, ну да. Тормозит не анимация, а что на на странице… Теперь я буду спокоен.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

Но вот у меня есть выбор. И свобода выбирать.

Ну хорошо, выбирай. Но не удивляйся, когда другие не разделяют твой выбор, потому что он, мягко говоря, не оптимален для задачи.

annulen ★★★★★
()
Ответ на: комментарий от annulen

потому что он, мягко говоря, не оптимален для задачи.

Я знаю, что выбор не распростроненный. Но про оптимальность ты судишь только по причине «так же все делают». Все так делают, потому что спецам по ml не охота плюсы учить.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от rumgot

Ты понимаешь, что при реализации этих эффектов на низкоуровневом языке все бы летало на компе 2005 года?

Предлагать клиентам запускать какие-то левые бинарники, чтобы посмотреть страничку продукта, это как раз то, что нужно бизнесу)

goingUp ★★★★★
()
Ответ на: комментарий от rumgot

Все так делают, потому что спецам по ml не охота плюсы учить.

Я спец по плюсам и не спец по ml, но у меня объяснение другое. Если модель работает на GPU, то для производительности (в любом понимании) вообще фиолетово, на чем написан код, исполняющийся на CPU. Поэтому пишут на языке, который позволяет писать более ясный код, не норовит поставить разработчику подножку при любом удобном случае (как те же C++ или JS), и легко интегрируется с нативным кодом. Питон хорошо вписывается в эти требования.

annulen ★★★★★
()
Ответ на: комментарий от rumgot

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

annulen ★★★★★
()

Можно скопилировать питоновые модули в нативные *.so с помощью Nuitka, а дальше вызывать из плюсового кода через Boost.Python или как тебе удобнее. Да, по модели выполнения это будет все тот же питон, но при этом в собранном приложении нет никаких файлы .py или .pyc, и нет парсинга питоновых сорсов или байткода в рантайме.

annulen ★★★★★
()

Ну или другой, не менее очевидный вариант: сделать отдельное приложение на python, работающее с нейросетью, и взаимодействовать с ним через юникс-сокет или по сети или еще как-то.

annulen ★★★★★
()
Ответ на: комментарий от rumgot

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

Пока ты не считаешь микросекунды - с большой вероятностью спекуляции уровня «будет медленно» это понты.

Браузер это просто способ доставки кода и корней доверия на сегодняшний день, по-сути продвинутый аналог jvm, только jvm простого пользователя сложно замотивировать ставить, а вот браузер - интернет и котики заставляют :)

faq2
()
Ответ на: комментарий от faq2

Давайте напишем всё на C++(c, rust, подставь своё), раз гуяндобуки так делают…

Давайте делать микросервисную архитектуру для штуки которая должна обрабатывать 10к запросов в секунду, ведь гуяндобуки свои сервисы делают на такой архитектуре…

Вот только прототипы гуяндобуки пишут как раз на java и питончике, а некоторые так и вообще на php!, а вот после запуска и, внимание, взлёта продукта, когда горизонтальное масштабирование и поддержка монолита становятся существенно дорогими, вот тогда оно уже переписывается на C++ и бьётся на микросервисы. Только в этой точке на прототипе уже заработана куча денег, которая окупает все эти оптимизации.

faq2
()

Большая часть библиотек на python на самом деле написана на С/С++, а python только для более удобной (скриптовой) работы с ними. Поэтому просто посмотри на питоновские библиотеки повнимательней.

soomrack ★★★★
()
Ответ на: комментарий от soomrack

Если говорить именно про библиотеки для работы с глубоким обучением - то да. Но вот именно большинство NER решений - именно питоновские.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от faq2

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

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

Ну и что это доказывает?

rumgot ★★★★★
() автор топика
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Какой процент его кодовой базы относится к критическим путям, где разница хотя бы в миллисекунду что-то значит?:)

UPD: и это не ввод-вывод

faq2
()
Последнее исправление: faq2 (всего исправлений: 1)
Ответ на: комментарий от faq2

Ну, или по-другому, сколько денег(любых ресурсов) ты сэкономил заказчику(даже если это ты сам) за счёт того, что проект на выбранном стеке реализован за то время, за которое он реализован?

faq2
()
Ответ на: комментарий от faq2

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

rumgot ★★★★★
() автор топика
Ответ на: комментарий от faq2

Там 1 мс, там 3 мс и т.п. В итоге получается монстр.

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

А где в приложении будем забивать на это? При работе с сетью? При записи аудио? В гуи? Вообще везде? Хули там. Память/процы дешевые.

rumgot ★★★★★
() автор топика
Последнее исправление: rumgot (всего исправлений: 2)

Ребята. Пожалуйста, давайте не будем превращать тему в убеждение: «почему не C++». Я знаю, что вы скажете. Давайте с вами это обсудим в другом месте. Мне нужно узнать ответ на вопрос из темы. Если у вас нет ответа, не повторяйте банальные вещи.

rumgot ★★★★★
() автор топика
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Это так не работает, точнее оно работает, но очень дорого экономить миллисекунду вокруг запуска решения сутевой задачи, когда сама задача 100 или 200мс занимает. Каждый раз, когда ты делаешь такую «оптимизацию», пожалуйста задумайся, что и для кого ты оптимизируешь, т.к. конечный пользователь в 99 случаях из 100 - проиграет.

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

faq2
()
Ответ на: комментарий от rumgot

Этот тред проклят. Создавай следующий 🤣

// Огорчают меня местные теоретики, не умеющие читать.. Ведь даже, в кои-то веки вопрос задан чётко, но нет - они снова не справились 😜

aol ★★★★★
()