Aspiring Data Science
327 subscribers
390 photos
10 videos
6 files
1.46K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

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

Меня разрывает между десятком проектов и идей. Все хорошие, классные, интересные, сложные. По итогу не успеваю ни один довести до ума. Смотрю на список из 13 стартапов и понимаю, что это уже не программерская, а управленческая задача.

Варианты решения:
1) продолжить долбаться самому. типа дёшево-бесплатно, но ничего не сделаешь и за годы, с моим темпом.
2) найти инвестирование и начать найм фрилансеров на решение небольших, четко сформулированных подзадач, затем по мере появления решений интегрировать их в прод везде, где смогут быть полезны. Типа придется делиться шкурой неубитого медведя, но так есть шанс хоть что-то довести до релиза.
#news #business #trading

Есть некоторые подвижки по проекту с трейдингом, в который я решил влезть.

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

Естественным образом проект распадается на 3 части:

1) прогнозирование (что будет с рынком или инструментом через некоторое время? если это вообще возможно)
2) торговая политика (а что конкретно нам делать, имея прогнозы?). сюда входят также бэктест и оптимизация параметров.
3) исполнение - это уже торговый робот

Я пока частично осилил часть 0, получение данных.
#cloudcomputing #dask #business #opticloud

Облачные вычисления с Dask требуют знания цен (особенно на спотовые инстансы), думаю начать регулярный сбор цен основных провайдеров (AWS, GCP, Azure) в базу. Возможно, в последующем сделаю какой-то сервис поиска лучшей площадки и инстансов для заданной нагрузки (с учётом прогнозной доступности и цены на заданную длительность вычислений). Например, клиент делает сабмит 1 блока своей задачи, сервис прогоняет его на нескольких инстансах, с помощью ML рассчитывает время выполнения на всех возможных инстансах всех облачных провайдеров (они же отличаются по железу). Согласно указанному клиентом объёму блоков в день, датам начала/завершения работ, система рассчитывает, в каких именно облаках и на каких конкретно инстансах нужно создавать кластер, чтобы минимизировать стоимость/время расчётов.

Производительность железа распадается на несколько блоков: CPU, GPU, RAM, Storage (HDD/SSD), Network.
Также у клиента могут быть задачи разного типа: ML Training, ML inference, Finance/Physics/Bio simulations, Video Encoding.
В голове крутится прогон подобных бенчмарков на каждом уникальном по соответствующему железу типу инстанса (например: модель процессора, тип и частота памяти, тип СХД, пропускная способность сети).

Тогда пользователь сервиса (в первом приближении) говорит: мне надо обучать sklearn-овскую модель. минимум памяти на ядро 8Гб, где сейчас это лучше сделать? Сервис отвечает: в AWS, регион us-west-2, зона 2b, инстанс такой-то, спот цена такая-то., индекс производительности такой-то. А если клиент указывает фреймворк tensorflow, в сравнении участвуют уже и GPU, TPU, Trainium инстансы, и получается другой ответ, к примеру, GCP, регион такой-то, TPU v3 spot, цена такая-то, индекс производительности такой-то.

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

Пока с облачным проектом неожиданный затык (ограничения по скрейпингу AWS), решил переключиться обратно на прогнозную модель для трейдинга. Собираю сегодня допинфо о параметрах биржевых сессий и ГО, и вернусь к блокам фичей.
#business

Мне кажется, с финансированием в $1M я бы мог сделать несколько успешных стартапов, нанимая разработчиков. Так много хороших идей и так мало времени. Ни у кого нет лишнего ляма? Что характерно, несколько месяцев тому я написал письмо с подобным содержанием 5 моим лучшим клиентам, мол, не хотят ли проинвестировать в такое? Ни один не ответил. ) В сотрудничество/партнёрство я уже не верю, так как все "слишком заняты", чтобы начать работать и что-то полезное сделать. Только найм, или своими силами.
#business #opticloud

А между тем, наконец-то полностью организован сбор ценовых данных и оценок доступности для AWS. Потрачен месяц вместо недели.
Работаю над API. Напоминаю, основная цель сервиса - быстро найти самые дешёвые сервера для облачных вычислений в достаточном количестве.

Раздумываю, как этим сервисом будут пользоваться вообще. Вот взять ML. Обычно мои задачи сводились к поиску серверов с достаточным объёмом RAM/VRAM на машину (чтобы хотя бы загрузился датасет), ядер чтоб побольше, и затем выбору инстанса с наименьшей спот-ценой. Ну, может, при обработке картинок еще был важен размер и тип локального диска.

Понятно, что в серьёзных кластерных вычислениях помимо цены надо ориентироваться ещё и на производительность на ядро CPU или GPU (+- с учетом архитектуры) для нагрузки конкретного типа.

Пока вырисовывается основной метод API:

find_best_servers(
workload="ml|finance|physics|rendering|integer|floating",
capacity={vcores,gpus,tpus},
hardware_requirements={cpu,gpu,tpu,ram,hdd,network},
schedule_requirements={start_time, duration_hours},
optimize_for="efficiency|price|performance|availability",
cloud_providers="any|aws|gcp|azure|ali|sber|etc",
lease_type="any|spot|ondemand"
)
,
который находит, скажем, топ-3 комбинации инстанса/облака/региона/зоны, удовлетворяющих критериям клиента по железу, доступности, и имеющих самое лучшее отношение производительность/цена для указанного типа нагрузки.

Пример вызова, чтобы подешевле посчитать тюнинг катбуста на табличке в миллион примеров с 300 фичами, на процессоре нового поколения, чтоб каждый сервер имел как минимум 20Gb RAM для открытия датасета, считать думаем на 500 ядрах около 2 часов, начать хотим сейчас:

find_best_servers(
workload={"type":"ml","framework":"catboost","dataset":{"nrows":1e6,"ncols":300},"hpt":True},
capacity={"vcores":500},
hardware_requirements={"ram":{"node_min_size":"20GB"},"cpu":{"features":"avx2"}},
schedule_requirements={"start_time":"now", "duration_hours":2},
optimize_for="efficiency",
cloud_providers="any",
lease_type="spot"
)

Пример ответа:

{'n_suitable_servers': 158,
'best_servers': [{'cloud_provider': 'aws',
'region': 'us-east-2',
'zone': 'az3',
'instance_type': 'r6idn.4xlarge',
'lease_type': 'spot',
'hardware_info': {...},
'n_required_instances': 62,
'expected_runtime_hours': 2,
'fulfillment_probability': 0.85,
'interruption_probability': 0.07,
'expected_instance_hourly_price': {'usd':0.3569},
'expected_workload_total_cost': {'usd':44.26},
'expected_average_savings': {'usd':7.11},
'workload_performance_rating':"15/1000",
}, ... ]}

Возможно, что данные будут грузиться из хранилища S3 некоторого региона, и будет удобно дать возможность указать, откуда и сколько данных потребуется загружать. Это позволит автоматически учесть стоимость трансфера в сервера "других регионов", чтобы потом не оказалось, что самый дешевый по железу сервер обошелся дорого из-за копирования данных.

Что ещё нужно учесть? Пишите в комменты советы и пожелания.