Lama
@Virviil , добавь тогда ссылку на флуд в описании @proelixir. Если хочешь, могу дать тебе тут овнера
Źmićer
Походу я не могу - я там не owner
Lama
Надо попросить овнера там тогда
Źmićer
https://t.me/yaBloom
Lama
https://t.me/yaBloom
Попроси ты, пожалуйста, тебя-то он скорее послушает чем меня
Bogdan
Что теперь тут общаемся ? 😂
jm
Получается так
Lama
Тут можно общаться на оффтопик, и всё. Темы касательно эликсира я бы оставил в основном чате
Ihor
🤘
Źmićer
Сегодня был дедлайн у меня с новым супер решением для машинного обучения. В результате пацаны из МЛ проебались с мультипроцессингом своей либы и я ща максимально срочно пишу обертку для этого говна на Фласке чтобы захерачить реплик на кубере и это хоть как-то работало
Źmićer
Пацаны пишут на сишечке в куду. Но код человека который не понимает что он делает - красивый, ни с чем не спутаешь
Lama
Куду?
CUDA, который апи к nvidia gpu
Ihor
Они это не учли или просто не успели?
Źmićer
Не учли наверное
Źmićer
Хз. Вчера на тестовыз данных работает
Tharin
А там мы, разве, не флудили?
Lama
В питоне уже есть зелёные треды или как там конкаренси работает???
У питона есть wsgi-сервера, котоыре держать пулл запущенных интерпретаторов
Dmitry
А стейт между пуллом интерпретаторов держать в редиске?
Dmitry
Ой, капец 😅
Lama
Т.е. Ничего лучше нет?
Ну есть ещё multiprocessing, но он ограничения на питон накладывает
Lama
А стейт между пуллом интерпретаторов держать в редиске?
Ну да. Вообще традиционно используют кролика
Dmitry
Как же грустно вне Elixir-а и Go 😩
Lama
Как же грустно вне Elixir-а и Go 😩
А мне вроде нормально. Я перепонял питон
Dmitry
А мне вроде нормально. Я перепонял питон
Мне очень нравится он, когда не нужно нагруженный сервис писать.
Lama
Ну, вроде GIL и кажется большой проблемой, а по факту вроде и не проблема. Это лишает многой головной боли при разработке чего-либо на питоне А за производительностью в питон никто и не идёт
Dmitry
Т.е. Когда нужна не распределенная программа - там много приятных мелочей, которых идеологически нет в Elixir-е
Dmitry
Как я понимаю repl-а там нет.
Lama
Как в питоне правильно трейсить проблемы в продакшене?
Читать логи, смотреть исключения. Как и везде, вобщем
Dmitry
В Elixir-е ты можешь зайти и включить трейсинг и увидеть того, чего не увидешь в логах в подробностях...
Dmitry
Где-то не добавил логов и всё, с питоном труба...
Lama
В Elixir-е ты можешь зайти и включить трейсинг и увидеть того, чего не увидешь в логах в подробностях...
Это правда. В питоне я бы просто получил бы запрос, который вызвал баг, написал бы тот вывод, который должен бы быть и тестил бы это локально
Dmitry
А если ты получил запрос и он перекачивает кучу данных и у тебя процессинг данных сломался на какой-то пачке, что ты не можешь залогать из-за размера?
Dmitry
Нужно хорошо продумывать как делать try catch при обработке данных, чтобы знать какой кусок из мегабайта данных его сломал.
Lama
Надо подумать. Если данные обрабатываются кусками, то этот кусок и должен быть запросом Грубо говоря, как в Map Reduce модели — нужно получить аккумулятор и кусок данных, сломавший программу Я думаю, это не сложно архитектурно продумать
Lama
cython )
Кстати у них прикольный туториал сразу на двух языках https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html
Ihor
Читать логи, смотреть исключения. Как и везде, вобщем
Я только так и дебажу в Эликсире. За 4 года, репл использовал только один раз 🤷‍♂️
Lama
Я только так и дебажу в Эликсире. За 4 года, репл использовал только один раз 🤷‍♂️
Согласен, репл это крайний случай. Но всё-таки гораздо приятнее когда знаешь что он просто есть под рукой
Dmitry
Я только так и дебажу в Эликсире. За 4 года, репл использовал только один раз 🤷‍♂️
Тебе везёт с проектами, я так дебагил только тот проект, который делал с нуля в компании во Франкфурте с нормальными логами... А вот в последних двух фирмах логи такие были, что обычный разработчик пожимал руками, где косяк и был я, который в любом говне мог найти ошибку 😂😂😂 (ладно, в последнем не так всё ужасно и с логами многого можно достичь, но не всё).
Lama
Мне очень нравится питон как раз из-за его возможности высокоуровнево и интерактивно управлять довольно низкоуровневыми вещами Можно легко играться с сетевыми пакетами в scapy Можно легко управлять матрицами в numpy Можно легко играться с картинками в pillow Можно генерировать программы на C в cython Можно читать память в memorpy
Dmitry
К примеру, у нас http клиент или точнее библиотека, его использовавщая из-за какого-то стейта бросала exception и только на продакшене - который нельзя былл воспроизвести(ибо ошибка появлялась через какое-то время после запуска приложения и была не связана с самим запросом) - посмотрел бы я, как такую фигню на питоне бы дебаггили.
Dmitry
Ошибка, возникающая пр накоплении стейта... Не, наверное, когда всё stateless и всё постоянно сериализируется, десериализируется и ходится в редис - на каждый чих. Наверное, там такие проблемы уже выгребли все.
Dmitry
И можно проинтроспектить редис.
Dmitry
Я к тому, что как оркестрировать десятки ML алгоритмов, которые должны параллельно работать? Кролик и не выходя из питона? Потому что все эти ML алгоритмы и так супер тормозные, что ходить в рабит и отсутствие параллельности в питоне всё равно ничего не ухудшит?
Lama
Я к тому, что как оркестрировать десятки ML алгоритмов, которые должны параллельно работать? Кролик и не выходя из питона? Потому что все эти ML алгоритмы и так супер тормозные, что ходить в рабит и отсутствие параллельности в питоне всё равно ничего не ухудшит?
Питон не предоставляет из коробки никаких тулов для управления и дебага запущенных программ. Это просто скриптовый язык, и создавался как скриптовый язык. Типа такой shell 2.0 ML это и есть скрипт. Его оборачивают в какой-нибудь flask, где там 2-3 метода, кладут в контейнер и управляют из кубов или чего-то такого. А бизнес логика с сущностями пишутся где-то ещё, где-то в другом месте
Źmićer
Как же грустно вне Elixir-а и Go 😩
Если сделать нифку которая работает 3 секунды без cpu bound то в Эликсире тоже будет грустно ))
Źmićer
А если закончится gpu память - то как нифку не пиши - она упадёт с sigterm и унесёт с собой ноду
Źmićer
Ну, достаточно n вызовов где n - число скеджелеров чтобы твой ковбой получил 3 секнуды на приём реквеста
Źmićer
Кстати, походу gpu- это io bound
Źmićer
Потому что оно через сокет запихивает данные внутрь gpu, потом дергает в ней rpc, ждёт ответа и выкачивает результаты назад
Źmićer
Только как объяснить этот факт нифке- я честно хз
Źmićer
Илдить из неё походу… ну, надо проверять
Źmićer
В идеале напилить высокопроизводительную либу для мл на эрланге - прям кайфово было бы. Но нада много денях, а готовые решения хорошо портируются только а питон
Dmitry
Или ML - малая часть логики?
Źmićer
У нас нету эликсира
Dmitry
А, тогда понятно 😄
Dmitry
Что-то простое на NX конечно можно сделать, но по уровню Elixir-у до экосистемы Python-а не добраться скорее всего никогда.
Źmićer
Фишка в том, что как показала практика - запускать это говно внутри самого питона практически нереально
Źmićer
И это даже с условием того что я за последнее время изучил вообще все способы для параллельного программирования там
Źmićer
Поэтому план - распихать все это говно по grpc сервакам, в том числе возможно с tensor flower serving
Źmićer
А потом делать data enrichment из нормального места
Źmićer
Хотя, сказать по правде, для этих целей async в питоне не чувствуется хуже чем beam
Dmitry
Учитывая, что ML сервисы судя по-всему и так количество параллельных процессов обработать может очень маленькое, что async, что beam, что thread-ы в Java - практический любой тул для распаллеливания подойдёт.