Андрей @aruslantsev
User
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Works in
- Date of birth
- Registered
- Activity
Specialization
Data Scientist, ML Engineer
Senior
Git
Python
Linux
SQL
OOP
MySQL
Docker
Bash
CI/CD
English
И это все?
А как же очень удобная опция --unrestricted для menuentry, которая позволяет загрузить выбранный пункт, но для изменения параметров загрузки потребует пароль.
Еще в core.img можно интегрировать свой ключ, и тогда grub будет загружать только подписанные вами же ядра и initramfs. Смотрите опцию --pubkey у grub-install.
Или воспользоваться secure boot, прописать свои ключи, да и вообще отказаться от загрузчика. Или подписать grub своим сертификатом, чтобы uefi проверял подпись загрузчика, а загрузчик - подписи ядер и initramfs
Спасибо за ваш титанический труд по сохранению здоровья гиков. Позвольте добавить pull request.
В утилизации отходов кашицы из мягких тканей свиньи (в простонародье котлет) допущена неточность. Добавление сырого яйца подразумевает добавления только его внутренностей, а попавшие частички твердой оболочки, называемой скорлупой, желательно удалить.
И как рекомендации из личного опыта. К наполнителю из хлеба также можно добавить молоко. Дозировку следует выбирать таким образом, чтобы кашица из хлеба с молоком оббладала текстурой, сходной с текстурой мясной кашицы. А если дома остался зачерствевший хлеб (без плесени, это важно), то его можно измельчить до грубодисперсного порошка с размером частиц 0.1-0.5 мм, и нанести на все внешние поверхности диска перед обжариванием. Также данный порошок можно найти в продовольственном магазине под наименованием "сухари панировочные".
В следующую редакцию еще я хотел бы предложить внести рецепт пельменей, позволяющий как насытить руки полезными веществами, так и развить мелкую моторику.
Отвечу здесь же, потому что использую похожее решение.
Я использую или systemd unit, который перезапускается при падении туннеля с обычным ssh, не auto, или баш скрипт, который в просто в цикле дергает ssh с нужными параметрами. Но в случае с баш скриптом его надо руками запускать после перезагрузки системы.
Увы, для существования технаря деньги тоже нужны :)
Когда технарю хватает зарплаты на существование, а не на жизнь, жажда исследований сменяется жаждой найти деньги для жизни. Благо, в IT я нашел ту область, в которой я могу заниматься исследованиями и использовать свои знания, и получать при этом достойную зарплату.
Так что технарь лучше работет при наличии денег :)
Про слух про оптимальные 5 ядер я думаю в курсе все, кто использует pyspark :)
В идеале при регулярных расчетах надо все обвесить мониторингами потребления памяти, процессоров, смотреть, есть ли spill. И еще исходить из баланса времени расчета, ресурсов и человеческих договоренностей, ведь на кластере мы никогда не бываем в одиночестве.
При разовых расчетах всем хочется быстрее получить результат, но тут опять же надо учитывать тот баланс ресурсов, времени и загруженности кластера.
А чтобы не стоять в очереди, достаточно иметь один экзекутор, одно ядро и гигабайт памяти. Только вот зачем?
Для динамической аллокации еще полезно знать про опцию
spark.dynamicAllocation.cachedExecutorIdleTimeout
, потому что если экзекутор закэшировал данные, то по истечению executorIdleTimeout он не будет остановлен.И указывать 20 гигабайт и 5 ядер -
страннаянеобоснованная практика. Например, я (тоже почти ничем не обоснованно, да) чаще использую 4 ядра и 10 гигабайт, и в 99% случаев этого достаточно.Еще стоит проверить, что в конфиге явно указано
KbdInteractiveAuthentication no
илиChallengeResponseAuthentication no
. Иначе такая команда может привести к удивительным результатам:ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com
А это лучше делать не через правку
/etc/passwd
руками, а черезsudo chsh -s /sbin/nologin root
. И еще рекомендую посмотреть ключи--expire
и--lock
для командыpasswd
.Это упрощение. Как минимум есть еще классический collect(). А проблемы с нехваткой памяти также можно легко получить и при неосторожном использовании методов для pyspark.DataFrame coalesce() или repartition()
К тому же можно сделать не toPandas().to_csv(), а записать датафрейм в hive или hdfs, например, а потом оттуда забрать данные.
Не все данные могут так просто влезть в память. И как раз настройка этого параметра позволяет не брать десятки гигабайт памяти на экзекутор, и pyspark сам разобьет датафреймы на более мелкие партиции.
Но чем больше ядер на экзекутор, тем меньше памяти на ядро. И тем больше потоков при shuffle read/write, что тоже не всегда хорошо. Это палка о двух концах.
И если основная цель - это все же ускорить вычисления, то как минимум стоит задумываться о том, как партицированы данные при джойнах, чтобы избежать лишней передачи данных.
Добрый день!
Были эксперименты с N-pair-mc Loss. На наших данных для этой задачи лучше всего себя показали BCE Loss и дообучение с ArcFaceLoss. Модель сейчас ResNet, и Swin Transformer в процессе оценки.
Добрый день! Спасибо за интерес к статье.
Если честно, пока особо не смотрели в сторону этого подхода. Было желание использовать обученную модель и для других задач, где есть много размеченных данных, поэтому вопрос с методом обучения особо и не возникал. Надеюсь в будущем, когда мы соберемся переобучать модели, будет время поэкспериментировать и попробовать новые подходы.