Всеволод Полетаев

Всеволод Полетаев

Неделя
May 4, 2020 → May 10, 2020
Темы
Железо
ML-инструменты
Стартапы
Engineering

Архив недели @hexfaker

Понедельник


Привет! У клавиатуры Всеволод Полетаев. Сейчас я занимаюсь тех-лидством и исследованиями в стартапе in3d. В ИТ работаю уже 5 лет, в ДС 2 года.

Вот примерный план на неделю: Работа в стартапе, каково это? Краткий курс в железо для дата-сайентиста Борьба с ежедневной рутиной: инструменты, автоматизация Инжиниринг в МЛ и около План примерный, порядок может меняться, привязки к дням недели нет потому что вот.

Начнем по традиции с рассказа о себе

Мне 21. Мой путь в программирование начался в 14, когда я поступил в один из топовых физ-мат лицеев Питера, ФМЛ №30, в 9й класс.

Там я сразу же начал ходить в крутейший кружок по программированию CGSG (Сomputer Graphics Support Group) под руководством Галинского Виталия Александровича.

Там я 2 года программировал сначала на C, а затем на C++. Занимались 3д графикой, алгоритмами обработки видео и изображений, и даже дедовским СV, например некоторые из нас реализовывали алгоритм Виола-Джонса.

Ставьте лайк под этим постом если тоже ходили к ВитСану или просто учились в тридцадке

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

В 11 классе я решил сосредоточиться на поступлении. Несмотря на это моих баллов не хватило на ФИВТ МФТИ и я оказался на ВМК МГУ.

Почти сразу же мне стало скучно и я решил пойти работать. Через одногрупника на меня вышел человек, который хотел делать мобильные аппы на заказ, и ему нужен был бэкендер. Я ничего не зная о бэкэнде, но будучи очень уверен в себе взялся.

В итоге это вылилось в 2.5 года сотрудничества, в ходе которых, я глубоко погрузился в разработку на java, работу с бд, администрирование и даже немного в менеджмент. Мы сделали несколько успешных проектов.

Конечно все это было параллельно с учебой в мгу, где после второго курса надо было выбирать кафедру. Я выбрал кафедру ММП, которая специализировалась на МЛ и анализе данных.

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

Так я оказался на позиции Junior DS в Dbrain (спасибо ods.ai), где успел поработать с некоторыми прошлыми авторами этого акка, а так же кучей других крутых людей, у которых многому научился.

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

Доходило до того, что в некоторые моменты я вообще не занимался моделями как таковыми. А меня тем временем все более тянуло в более академический рисерч.

Поэтому я решил уйти в in3d, к Диме Ульянову. В тот момент всем еще казалось, что мы будем реально делать публикабельные вещи. Я хотел, чтобы за время обучения в маге я наберал достаточно публикаций, чтобы попасть на хороший PhD. Это было осенью прошлого года.

А, ну да, забыл упомянуть. Сейчас я учусь в магистратуре МФТИ.

Кстати во время работы в Dbrain я успел побыть core-developer @catalyst_core. Помогал делать различные архитектурные улучшения, чтобы фреймворк был более дружелюбным и гибким.

Ладно, с биографией вышло дольше чем я ожидал, но зато мы плавно подошли к теме, что такое работать в стартапе.

0/ Итак, стартапы. Погнали!!!

Буду рассказывать про стартапы на ранних стадиях — небольшие компании (с технической командой до 10-20 человек), не обязательно с венчурным финансированием (мне известны исключения), у которых пока нет четкого понимания какой продукт они делают, нет большого количества клиентов.

Скорее всего такой компании от 0 до 2 лет. Не берусь утверждать, что во всех компаниях ваш опыт будет похож на мой, но в кулуарных беседах довольно часто делятся подобными наблюдениями. Возражения/дополнения/вопросы — велкам в комменты.

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

1.2/ Особенно интересно, когда разница в возрасте с таким коллегой может достигать 10 лет.

2.1/ Если вы молоды и энергичны и уверены в себе, вы сможете набрать столько ответственности, сколько сможете унести. Хотите помочь настроить сервак — вперед. Хотите пообщаться с клиентами — пожалуйста.

2.2/ Видите, что какие-то вещи делаются неоптимально — предлагаете как это исправить и оуните процесс. Знаете как можно сделать лучше — делайте.

2.3/ Я прокладывал интернет в офисе, пересобирал и настраивал железки, выезжал на встречи с клиентами вместе с продажниками для демо, и делал еще много всего, что не относится к разработке и дс.

2.4/ Все это я делал по собственному желанию. Было весело, нервно, страшно, бессонно — но ни капли не жалею.

3.1/ Вам придется научиться работе в команде, как техническим её аспектам, так и софт-скиловым. Людей в команде мало, все они разные. И у каждого свои тараканы: кто-то веган, кто-то коммунист, кто-то верит в антинаучную дичь, кто-то не ест сахар, кто-то не любит евреев.

3.2/ В случае конфликтов не получится уйти в другой отдел, или просто перестать взаимодействовать с каким-то человеком. Поэтому пресловутая толерантность, умение уважать чужое мнение, а так же умение аргументированно отстаивать свое — ваши главные софт-скилловые друзья.

4.1/ Помимо добровольных активностей, у вас наверняка будут задачи, которые сильно более про разработку (если конечно вы не совсем сырой джун с 0 знаний за пределами ds).

4.2/ Написать апишку, сверстать страничку, запилить апп под андроид, или написать пару аналитических запросов в бд - хотя ты пришел заниматься CV.

4.3/ Кому-то это по вкусу и не даст заскучать от смотрения на падающий лосс в тензорборде, а кто-то скажет: да ну его, фигня какая-то, пойду лучше в nvidia учить ганы.

5.1/ Работа в стартапе — это классная возможность создать то, чего раньше не было: в отличие от устоявшихся компаний, где часто пилят инкрементальные улучшения в существующий продукт, в стартапах почти всегда делают что-то новое.

5.2/ К сожалению, по статистике, зачастую то, что вы сделаете отправится на свалку истории. Не потому что оно плохо или не работает, а потому что гипотеза оказалась не верна, и это нормально.

5.3/ Кстати, поспорю с мнением, высказанным выше @digitman_: AI в поверпоинте это скорее не про стартап, а про консалтинг. Там это сплошь рядом.

TBC...

Вторник


И снова здрасте) Сегодня закончим тему про стартапы, а вечером начнем про инженеринг. Stay tuned!

6.1/ А еще стартап это очень хорошая возможность научиться инжинирингу на грани — научиться делать вещи так, чтобы с одной стороны через месяц вы все еще понимали что там происходит, могли вносить изменения и поддерживать, а с другой — чтобы оно было готово к вчера.

6.2/ В стартапе время — это реально деньги: не успел — продолбал клиента, не поднял инвестиций → умер.

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

6.4/ Вернуться назад времени уже не будет. Это относится как к коду и архитектуре, так и к работе с данными.

7.1/ Для многих стартап — это полное отсутствие work-life balance — прилетающие посреди спринта срочные задачи, личное чувство ответственности за результат (а как же, фантики же сгорят!!!), проблемы с оценкой сроков (так как придется делать малознакомые вам вещи).

7.2/ Будет и работа по выходным, и поздним вечером, и в ночь перед отпуском. Для особенно упоротых будет и в отпуске).

7.3/ Но в то же время ваш график гибкий: и посреди дня можно отлучиться по делам, взять выходной, и в отпуск отпустят когда попросишь - без бюрократии и прочей фигни. Главное чтобы задачи делались.

8.1/ Подводя итоги, я считаю, что работа в стартапе лучше всего подходит молодым амбициозным сеньорам и мидлам, уже не обремененным учебой в вузе, но еще не обремененным семьей.

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

8.3/ Джунам - не очень советую этот путь: как минимум будет мешать учебе, а если не повезет - будет мало работы непосредственно с дс, или из-за пункта 6 вас будут гнать, и не позволят научиться делать работу хорошо, но медленно.

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

Среда


Ну может все-таки хотя бы иногда потому что сделали плохо? Или даже не иногда а часто? 🤔 twitter.com/dsunderhood/st…
Иногда — безусловно. Однако большая часть фейлов все таки лежит за пределами технических вопросов. Хотя бы потому что писать рабочее ПО человечество более или менее умеет, а точно предсказывать реакцию рынка не может никто. twitter.com/tru_pablo/stat…

И вообще вопрос что такое плохо довольно философский и сильно зависит от точки зрения. Особенно в дс. Модель с 97% точности это хорошо или плохо?

Вчера не успел начать про инженеринг, прошу прощения. Начнем сейчас. Это будет набор разных мыслей, связанный с разработкой в дс. Сразу предупрежу: ожидается немного капитанства, немного набросов и оценочных суждений. Не соглашайтесь и бомбите в комменты, будем дискутировать!

Контейнеры

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

1.2/ У нас после внедрения сборки и запуска средствами docker и docker-compose, благодаря которым их мог сделать каждый, разработка в команде ускорялась в разы - каждый человек становился гораздо более автономным.

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

1.4/ Ну и конечно унификация кодовой базы с тем что в проде сильно упрощалась поддержку этого монстра.

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

2.1/ При этом конкретно к докеру у меня неоднозначное отношение. Во-первых, проект не очень быстро развивается в последнее время. Во-вторых, для работы в интерактивном режиме докер не подходит вообще.

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

3.1/ Отдельная проблема это root-права, которые включены по дефолту. Особенно когда речь идет об общем кластере, что в глубоком обучении довольно распространено, каждому под стол тачку с 4мя картами не поставишь.

3.3/ Кто-то обязательно пожалуется, что не может удалить файлы, созданные в контейнере, находясь снаружи него, и что ему нужно sudo. А получив его, обязательно сделает 'rm -rf /' или 'сhmod 777 -R /'

3.4/ Второе веселее - эта команда не спросит, уверен ли ты, а система работать практически перестанет. Попробуйте на досуге в виртуалке. Не на реальной тачке!

3.5/ И сделать это может как джун, вчера впервые в жизни открывший консоль, так и матерый разраб, который просто поставил пробел не в том месте и не заметил. Знакомые рассказывали, что кто-то подобным образом сломал ось на DGX.

3.6/ Не говоря уже о проблемах с безопасностью в случае когда кто-то специально захочет что-то сломать.

4.1/ Существует отличная альтернатива докеру под названием singularity. sylabs.io,: работает только под вашим юзером, монтирует текущую рабочую директорию по умолчанию, из коробки умеет работать с гпу, полностью поддерживает образы от докера.

4.2/ Я когда-то делал доклад про нее youtube.com/watch?v=z0tP4w… (c середины). Он немного устарел, часть проблем которые я там обозначил уже исправлены, но общий расклад не поменялся. По крайне туманным для меня причинам, к сожалению, она почти никем не используется.

Обучаете ли вы модели в докере

Можете ли вы задеплоить весь пайплайн сами и если нет, замедляет ли оно вас?

Четверг


Типизация в Python

Начиная с версии 3.6 в пайтон завезли аннотации типами для сигнатур функций и переменных. Я попробую объяснить почему это круто и вам нужно начать их использовать.

Даже тем кто никогда не писал на статически типизированных языках, или очень хочет оставить себе возможность засунуть str там где нужно засовывать int.

IDE становится более полезной: показывает какие поля и методы есть у объекта, возвращаемого из функции, показывает какие параметры есть у методов и напоминает какие типы надо в них передавать. Подсветить связанные с этим потенциальные ошибки.

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

Статическая проверка когда: Их можно использовать для настоящей статической проверки всего через mypy mypy-lang.org. Его так же можно постепенно внедрять в старый код без аннотаций. Этот инструмент сильно сократит вам количество багов и сэкономит кучу часов дебага.

В теории в будущем можно будет автоматически проверить правильность dtype в ndarray, или выводить шейпы на выходе по шейпам на входе. Работы в этом направлении ведутся github.com/numpy/numpy-st…

Еще типы в пайтоне позволяют писать меньше кода: яркие примеры это fastapi.tiangolo.com (как фласк, только быстрее и удобнее), typer.tiangolo.com — argparse/fire на стероидах, который сокращает количество boilerplate.

Вообще практики разработки больших проекты на пайтоне без особых болей активно развиваются, и не ограничиваются только типизацией. Хороший обзор можно тренди штук можно почитать в этой серии постов cjolowicz.github.io/posts/hypermod….

А если хотите просто прикрутить все best practices в новый проект сразу, то вам в этот стартер-проект github.com/TezRomacH/pyth… (Im a bit affilated)

А если же в вашем коде нет ни одного класса и между функциями вы гоняете только дикты листов диктов неясного содержания, или у вас нет функций, аннотации вас не сильно спасут. Вам стоит начать с книги Сlean Сode, чтобы понять, как можно писать код лучше и почему это стоит делать.

Трейнлупы

Завершая поток мыслей про инженеринг, затрону вечный холивар юзеров пайторча за трейнлупы (да простят меня юзеры tf, theano и caffe если они еще не вымерли)

Какой трейнлуп вы используете в торче

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

Например раньше я был членом кор-тим каталиста и пытался сделать классную удобную архитектуру. Какие-то абстракции у нас получились удобными, и я ими до сих пор доволен, (например разделение experiment/runner).

А какие-то, к сожалению, не прошли проверку временем, кмк. Например конфиги (в том виде, в котором они есть в catalyst), или система коллбеков.

С конфигами мои претензии очень похожи на то что описано в этой статье beepb00p.xyz/configs-suck.h…. Если в кратце сложные конфиги превращаются в ненужный неудобный язык программирования, либо даже не покрывают достаточное количество кейсов и код все равно приходится писать.

Коллбеки же очень неудобны из-за неявных зависимостей между ними через мутный стейт, которые вынуждают проверять их порядок и требуют костылей в виде захардкоженого order (github.com/catalyst-team/…)

Окончательно я попрощался с использованием фреймворка, который сам когда-то разрабатывал, после того как уже будучи не в кор-тим и не пользуясь им регулярно, после очередного апдейта с трудом разобрался как сделать несколько лоссов. Примеров не было, документации не было. Финиш.

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

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

Местами скудная документация, некоторые решения тоже очень странные: argparse.Namespace для передачи гиперпараметров (pytorch-lightning.readthedocs.io/en/latest/api/…), очень странный форматы ретёрнов (pytorch-lightning.readthedocs.io/en/latest/api/…), гигантское количество параметров в конструкторах (pytorch-lightning.readthedocs.io/en/latest/trai…)

Еще не хватает хотя бы опционального стандартного способа все таки грузить конфиги. Причем я не один такой, например вот тут @AndLukyane пилит для этого свой костыль kaggle.com/artgor/object-…

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

@dsunderhood Первая вещь, которая начала сильно раздражать после кераса: зайди куда-нибудь и скопируй самописный кусок кода, чтобы что-то запустить. В итоге этот код разрастается, копируется дальше и возникает резонный вопрос: неужели все то же самое делают?)
Кажется что многие. Мне это тоже не нравится. Каталист как раз пытался сделать так, чтобы копировать вообще ничего не надо было в большей части случаев. Вышло так себе, на мой взгляд. А лайтнингу не хватает небольших блоков, которые можно было бы комбинировать между собой. twitter.com/khlevnov/statu…

Пятница


Тут в ленту только что прилетела идеальная иллюстрация зачем вообще использовать открытые популярные трейнлупы вместо своих велосипедов: Академики скопипастили луп из другой статьи вместе с багом. В итоге результаты у них невалидные github.com/fengxinjie/Tra…

ТЛДР: у ребят аккумулировался градиент и в итоге они обучились на валидации

Понедельник


Поздноночный прощальный тред про железо

Ниже 2 сабтреда, один про серваки (aka девбоксы), другой маленький с моим имхо про ноуты. Если останутся вопросы приходите в ods канал #hardware, я (@hexfaker) или кто-то еще обязательно ответят.

Кому будет полезен свой девбокс: - Если вы каглер, и много обучаете вам будет проще жить потому что нет ограничений на время как на кагле, или будет дешевле если сейчас вы учитесь в облаке

- У вас вообще нет видеокарт ни дома не на работе, но хочется вкатиться в DL поглубже

- Если у вас на работе свободная политика работы с данными (например вы стартап), и вы можете данные скопировать себе, то на своей машине однозначно удобнее учить потому что никто не будет мешать вам и занимать видеокарты

Среди девбоксов существует сильный водраздел по количеству карт: собрать машину на 2 gpu сильно проще и дешевле. Для 4х карт нужно совсем другие процы, матери, бп и корпуса, которые значительно дороже.

Основные моменты

CPU: Берем amd ryzen. Потому что больше ядер и дешевле. Для задач диплернинга важнее количество ядер чем производительность одного ядра, поэтому райзены лучше интелов.

GPU: 1080ti бу с авито. Сейчас самые оптимальные по цене/скорости/к-ву VRAM. В целом делятся на 3 типа: обычные (2-3 слотовые, с 2-3 вентиляторами, гоняют воздух по корпусу), турбинные или blower-style (2-слотовые, выдувают наружу),

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

При покупке надо смотреть на внешнее состояние (отсутствие сколов, подтеков, пятен) и проверять софтом. Я обычно прихожу с загрузочным хардом с линукс, гоняю github.com/ComputationalR… и пару сеток, в дополнение к furmark который обычно для меня прогоняет продавец.

Ничего не должно падать или сыпать непонятными артефактами. Брал так 3 карты, пока все ок. Но наверное может и не свезти кому-то. Если можете себе позволить, смотрите объявления чуть выше среднего по рынку, меньше шансов купить кирпич.

Если вы мажор, то берите 2080ti из магазина, со вторичкой не надо возиться пока.

RAM: ryzen из-за особенностей своей архитектуры сильно зависит от скорости памяти (частоты и таймингов). Это очень заметно в играх, на ютубе кучу обзоров про это. Для DL ходят споры: одни говорят 2666 достаточно, другие говорят больше тоже накидывает. Тайминги тоже важны.

Мое мнение что память с 3000мгц и таймингами 16 не такая дорогая, чтобы экономить. Раньше еще говорили что важны чипы (samsung b-die), но с новыми поколениями или свежими биосами это кажется потеряло смысл. У меня 1900x сейчас работает на 3000 с норм таймингами не с b-die.

PSU: На бп не надо экономить. Инфа о том какие брать, сколько мощьности и какая вообще разница есть в этих видео youtube.com/watch?v=5TUwyZ… youtube.com/watch?v=VFnuP3…

CASE: для корпуса в целом важны просторность и продуваемость. Чем больше размером тем лучше. Нижнее расположение PSU лучше верхнего, блок не гоняет горячий воздух и служит дольше. Подсветка и стекла на ваш вкус.

Берите nvme-ccд на 1тб со скоростями чтения от 1гб/с, чтобы успевать читать кучу датки и нагружать карту. Его же можно использовать под систему, или можно взять отдельный sata ссд для этого.

В ссд тип ячеек (3d) tlc или (3d) mlc (если вы мажор). qlc не надо, быстро деградирует до фиговых скоростей и сыпется. Среди nvme очень любят серию evo от самсунг, но другие вроде тоже не ругают. Для сата в принципе покатит наверное любой вендор.

Если экономите на первое время можно без nvme, но иногда придется оптимизировать пайплайны считывания. А может вам повезет и вы не столкнетесь с этим. Ну и 4+тб хард под помойку, конечно же. По хардам тоже не могу ничего сказать, не изучал тему, взял первый попавшийся.

Водораздел появляется из-за повышенных требований к бп (1600вт+), корпусу, и на 4 карты нужно именно threadripper брать потому что там много pci линий и карты у вас будут работать в режиме 2 x16 и 2 x8,

На обычных райзенах не хватит pci линий, будет x8 x8 x4 x4 (x4 это очень мало для dl, x8 необходимый минимум). Все это железо менее массово и поэтому стоит дороже.

Итак, под 4 карты:

CPU: Threadripper 1950x или 2950x. Выше смысла особо нет, ниже не следует, но если очень надо то можно. Заменить потом сложно, товар на вторичке не ходовой. Если мажор — берите 3е поколение, но оно оч дорогое. Но крутое, наверное стоит того.

MOBO: сокет TR4, хорошими считаются asrock x399 taichi или fatality, или gigabyte x399 defignare-ex. У подовляющей части одс стоят они. так же можно брать asus zenith extrime, но она дороже и смысла в этом не много.

GPU: blower style или гибриды, иначе все перегреется. blower сильно шумят, учтите это. Наиболее жирным считается наборы все гибриды, либо 3 гибрида + обычная на 2 слота.

RAM: 64гб, 4 плашки (чтобы работало 4 канала, так быстрее). Можно брать 2 одинаковых комплекта по 2, у меня так работает норм. Но есть те кто жалуются что не заводится из-за разных партий. Хз, не сталкивался лично.

PSU: 1600вт окнорм, меньше не советовал бы. Хорошо зарекомендовал себя superflower leadex 1600 platinum (он же evga supernova 1600 p2). Не следует брать блоки от enermax, у них стабильно работает только одна схема подключения, и то мудреная. В остальном рекомендации из видосов.

Case: от full tower и выше или крупные cube case (это в которых мобо горизонтально лежит и тяжелые карты не создают выламывающую нагрузку. Хорошие модели это thermaltake core v71/x5/x9 (x5 и x9 — идеальные cube case), corsair air 740.

Из них всех сейчас в мск в продаже только v71, но может будут потом или на вторичке. На худой конец будете знать на что опираться при самостоятельном выборе. Опять же вентилируемость, крепление для радиаторов если будете ставить гибриды, и минимум 8 заглушек pci.

DISKS: ничего особенного. COOLER: noctua u12s-tr4 или u14s-tr4 (именно tr4!!!)

На 2 карты

CPU: Сокет AM4, ryzen 3 поколения. Они сильно лучше предидущих и не кусаются ценой. 3700x должно быть достаточно (8 ядер). Но можно и больше, если есть деньги. Но имхо уже 3900x это оверкилл, 12 ядер не надо.

MOBO: Выбор широкий но не все способны вытянуть многоядерные cpu своей системой питания. Ориентируйтесь по этой табличке docs.google.com/spreadsheets/d… и обзорам. Для 2х карт еще нужна поддержка sli (он не будет использоваться, но это удобный индикатор того что 2 карты точно заведутся)

GPU: Тут нет ограничений, берите любые RAM: кит на 32гб 2мя планками более чем достаточно (2 для 2х каналов, быстрее)

PSU: будет достаточно 1000вт, смотрите видео по ссылкам выше, и выбирайте. Выбор широкий.

CASE: Midi tower и больше, убедитесь что точно совметстим с mobo. Так же ориентируйтесь на зад, там должно быть не менее 6 заглушек pci. Корпуса с нижним расположением бп лучше из-за того что бп не гоняет через себя нагретый возжух. Дальше смотрите на вкус и цвет.

COOLER: можно не думать и брать noctua u12s, он хоть и дороже но он просто норм и работает. DISKS: тоже ничего особенного

Вот примерный набор который я бы сам купил если бы собирал тачку на 2 карты. На цену не ориентируйтесь, во-первых там американские (некоторые вещи дороже, некоторые дешевле), а во вторых карты там новые. А в россии только вторичка. pcpartpicker.com/list/F24JHB

Про ноуты:

При наличии личного сервака или сервака на работе, а так же мобильного интернета, я убежден что ноуту не нужен дискретный gpu. В ноуте важна компактность, легкость и автономность.

Это просто терминал для воода текста, браузера, ide и ssh. Отладка куда софта через удаленную отладку на сервере, работает отлично.

CPU: только i5, i7 ничего не дает из-за грустных систем охлаждения в ноутах. Между 8м и 10м поколением может не быть никакой разницы, интел все запутал в 10 серии. 9 такое же, как 8. Процессоры c индексом h жрут больше.

RAM: 16гб. 8 уже сильно мало. Есть компактные ноуты с нераспаянной памятью, если охота засунуть 32. Но зачем? Разве что взять такой с 8 и поставить в него еще 8.

SSD: обязательно, 2к20 на дворе, очень сильно все ускоряет по сравнению с хардом. Разговор можно начинать от 256.

Экран: Дюймы на вкус, мне хватает 14, кому-то может нужно и 15. FullHD, все еще, не нужен вам 4к и qhd, только батарею высаживать. Развею популярный миф что от него вытекают глаза по сравнению с ретиной от мака.

Так вот, это заблуждение, не от fhd вытекают. А из-за шим, который есть на дешевых экранах. Вот от него глаза реально вытекают, и очень сильно. Проверяли сами, брали 2 ноута, оба fhd, оба 14 дюймов.

У одного было больно сидеть, у второго ок. Так что будьте осторожны, смотрите обзоры и убеждайтесь что шим нет.

Клава: вкусовщина, надо выбирать или привыкать

Ну и вообще я считаю, что если вы прям не фанат мака и хотите остаться под линуксом, найти себе подходящий ноут не проблема, не надо пересаживаться на мак. Дорого и качество уже не то. Пощупайте например свежие XPS 13, они тоже прям очень кайфовые. Сам сижу на latitude 7400

Про ноуты:
Последний тред вышел очень длинным. Вот его содержание: Общие соображения по сервакам: twitter.com/dsunderhood/st… Конфиг на 4 карты: twitter.com/dsunderhood/st… На 2: twitter.com/dsunderhood/st… Ноуты: twitter.com/dsunderhood/st…

Но, так или иначе все подходит к концу. Подошла и моя неделя. К сожалению я не успел раскрыть тему про рутину и автоматизацию. Наверное раскрою ее на личном аккаунте 👉@hexfaker. Подписывайтесь! До встречи? Ну и мета-тред по традиции👇

0/ Итак, стартапы. Погнали!!!
Работа в стартапе: как и для кого: twitter.com/dsunderhood/st…

Трейнлупы
Инженеринг: Контейнеры: twitter.com/dsunderhood/st… Типы в python: twitter.com/dsunderhood/st… Трейнлупы: twitter.com/dsunderhood/st…

Последний тред вышел очень длинным. Вот его содержание: Общие соображения по сервакам: twitter.com/dsunderhood/st… Конфиг на 4 карты: twitter.com/dsunderhood/st… На 2: twitter.com/dsunderhood/st… Ноуты: twitter.com/dsunderhood/st…
Железо для ДС (на самом деле DL): twitter.com/dsunderhood/st…

Начнем по традиции с рассказа о себе
Биография. Ну вдруг кому-то будет нужно: twitter.com/dsunderhood/st…

Ссылки