Aspiring Data Science
285 subscribers
360 photos
9 videos
5 files
1.18K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#dask #coiled

Экспериментирую с Dask и Coiled. Первые впечатления - всё смешалось, кони, люди. Кластеру coiled при старте передаётся параметр n_workers=int, который в обычном dask значит то ли число узлов (компьютеров, виртуальных машин), то ли число процессов на узле, в зависимости от настроек. Я попробовал заказать n_workers=8 на AWS c compute_purchase_option="spot", он мне бахнул 8 инстансов t3.xlarge (4 vCPU, 16Gb RAM), надеюсь, спотовых, +1 scheduler, если верить доке, шедулер всегда не-спотовый. Но через пару секунд всё это добро удалилось тк coiled не смог восстановить окружение моего ноута: "ClusterCreationError: Cluster status is error (reason: Scheduler Stopped -> Software build failed -> Conda package install failed with the following errors: package anaconda-2022.10-py310_0 requires pip 22.2.2 py310h06a4308_0, but none of the providers can be installed) (cluster_id: 194588)."
Придётся сначала создавать софтовое окружение явно, как я и думал. Но уже видно, что, несмотря на огромную проделанную работу, coiled не довели её до совершенства. При работе с облаком всегда актуален вопрос стоимости, а тут никаких тебе оптимизаций цен. Максимум они могут "посоветовать" регион с высокими шансами получить машины. Можно указать перечень допустимых инстансов и регион, но цены на них ты должен вызнавать самостоятельно. И никак не регламентировано, как создаются гетерогенные кластера с инстансами разных типов. Такое ощущение, что coiled просто насыпает каких-то рандомных или же дефолтных инстансов, какие может получить от облачного провайдера.
#dask #coiled

Ещё что интересно, coiled поддерживает dask-овые ресурсы, но аннотировать рабочие узлы ресурсами нужно самостоятельно, что крайне странно. Ну неужели нельзя было нормально сделать, чтобы железо аннотировалось автоматически?
#dask #coiled

Ураа, после пары часов танцев удалось запустить вычисления на кластере AWS через coiled. Уже хотел отказаться от этой затеи, т.к. постоянно выкидывало ошибку что не установлен мой модуль, хотя я его копировал на узлы с помощью client.upload_file. Уже было расстроился, что не получается сделать прозрачную замену локального dask на распределённый, но оказалось, в той функции, что требуется запустить на кластере, надо сделать импорт из нужного модуля, и тогда всё заработает. Это нигде не документировано и в поисковике не находится, не удивлюсь, если многие до этой проблемы дошли и бросили. Ну ладно, все проблемы решены, получается? Нет, конечно.

Замерил использование CPU на воркере, похоже, всегда загружено только 1 ядро, что за чёрт? Запостил вопрос на их гитхабе (другой поддержки там не предусмотрено).
Похоже, стартап с US$ 21M финансированием, цель которого демократизировать кластерные вычисления питонистов в облаках... решил, что поддерживать многопроцессовость vs многопотоковость, которая нужна для чистого питон-кода, не умеющего обходить GIL, (и которая уже была в dask) не надо, и так сойдёт. Как говорится, что это, глупость или предательство?

Пока что мне подсказали использовать много машинок не более чем с 2 vCPU. По результатам теста, действительно, это позволяет извлечь максимум из железа: 1 ядро по-любому подсунут виртуальное (HT), и оно даёт +15% к производительнсти, даже с учётом того, что dask от coiled на потоках (не знаю, как это получается). Но при добавлении ещё одного реального и виртуального ядра это масштабирается ещё на 15% вместо 50%, что уже невыгодно. Конечно, создавать каждый раз вирутальный сервер со своим полноразмерным образом диска ради 2 потоков глупо, ну а что делать.
#dask #coiled

Так смешно. Мэтт Роклин, глава Coiled (и создатель Dask), прислал мне емэйл, что, мол, я престал пользоваться их продуктом, не предоставлю ли обратную связь, почему так вышло? Не знаю, часть ли это стандартной практики контроля качества, или связано с нашей беседой по поводу отсутствия в койлед функциональности мультипотоков, которая есть в опенсорсном dask-distributed, на что я указал им в issue и они пытались мне помочь (но их советы не сработали). Я ответил на письмо, что детальный feedback предоставлю, но мне только нужно понять, насколько развитие dask-distributed создаёт конфликт интересов с развитием коммерческого Койлед, к примеру, что будет, если я предложу PR по добавлению в AWS dask-cloudporvider спотовых инстансов, которых там по странному стечению обстоятельств не завезли. В течение часа Мэтт ответил, что это не проблема, и парни из nvidia, которые тоже поддерживают dask, будут рады это принять. Ну хорошо, подумал я, люди открыты меняться в лучшую сторону, и честно изложил во втором письме свои мысли по поводу того, что Койлед берёт слишком много денег за весьма скромную функциональность, и не пытается даже решить актуальные проблемы: выбор серверов где нагрузка юзера будет считаться быстрее и дешевле, гетерогенные кластера в разных облаках, прогноз interruption rates, prices, perf scores с помощью ML и предоставление пользователю этих оценок. Я как-то думал, это приведёт к плодотворной дискуссии, но прошло уже несколько дней, а мой визави просто пропал )

В связи с этим вспомнился анекдот:

- Вы указали в резюме, что Вашим основным недостатком является привычка всегда говорить напрямик и только правду, верно?
- Да.
- Но, знаете, я думаю, это вовсе не недостаток, а даже преимущество.
- Да мне по*уй, что ты там думаешь.