Самая большая и серьезная проблема у Nest.js это то, что по умолчанию под капотом у него все тот же «любимый» всеми Express.js
И несмотря на то, что все это обмазано архитектурным сахаром, копни чуть глубже — и опять вляпался в Express.
Думаю стоило об этом упомянуть в статье.
ps. да-да platform-agnostic — я в курсе, но скажите по-честному, часто ли для новых проектов на nest.js будут выбирать что-то отличное от дефолтных настроек?
И мне решительно непонятно, почему они не взяли уже готовые проекты Кадыр Хана, почти не уступавшие по характеристикам другим аналогам?
Я думаю, что к им просто к тому времени просто не выгодно было с экономической точки зрения. Атомная экономика просчитывается на десятилетия вперед, и если они понимают, что постройка такого предприятия не будет экономически эффективной, то и смысла нет начинать.
Какая-то слишком радужная статья. У меня не такой позитивный опыт с датасферой.
Во-первых очень часто вылазили ошибки такие: Execute error: Servant g1.1 not allocated: Internal Error. Абсолютно неинформативно - ты ждешь несколько минут пока запустится ячейка, потом раз - и эта ошибка. Причем это не ошибка в коде, потому что через какое-то время все работает на этой же ячейке.
Во-вторых, непросто поставить дополнительные пакеты или что-то нестандартное. Если в Колабе просто вначале пишешь инициализацию со всеми зависимостями и пакетами, то тут такое не пройдет - у ячейки нет прав суперюзера и все ставится в пользовательское пространство, поэтому ставится не все как надо. Соответственно просто скопировать блокнот с Колаба не выйдет, если там ставится какие-то хитрые пакеты.
Для решения второй проблемы придумана возможность создавать свое окружение при помощи Docker. Пишешь прямо в проекте свой Dockerfile со своими зависимостями, билдишь его и ставишь использовать по умолчанию. Интерфейс очень своеобразный - надо писать код dockerfile прямо в проекте, жать на кнопку Build и молиться что все соберется как надо.
Может не собраться. В таком случае думаете можно отредактировать файл и запустить снова? Нет - редактировать нельзя, надо клонировать конфигурацию (у нее при этом на конце появляется посфикс "- clone") и редактировать-билдить заново.
Еще может собраться, но не пройдут тесты - причем тесты могут не пройти просто так - пару раз у меня они не проходили просто потому что все были skipped, в другой раз один из тестов просто упал на ровном месте. В таком случае сборку перезапускаешь, а это процесс не быстрый (работает то сборка на самом базовом инстансе с1.4) и она со второго раза проходит нормально.
В общем в процессе экспериментов сборки копятся удачные и не очень и в итоге при очередной попытке что-то собрать система говорит, что место под них закончилось и нечего собирать больше не буду. Начинаешь удалять все, что не собралось и всякие промежуточные варианты - а они не все удаляются, те которые подключались и использовались - сразу удалятся не хотят, нажимаешь удалить, должно через несколько секунд появится окно что образ удален, но ничего не происходит, а образ продолжает занимать место в системе. К слову, как посмотреть, сколько выделено пространства под образы я тоже не нашел, в интерфейсе ничего такого нет.
То, что при сборке нельзя выбрать на каком виде инстансов будет производится сборка тоже нельзя - только на c1.4. Это особенно доставляет, потому что некоторые пакеты при сборке проверяют конфигурацию системы и не ставят модули для cuda, если не видят в системе GPU. Мне пришлось патчить установщик Deepspeed чтобы отключить эту проверку, а я тот еще питонист, так что это заняло немного дохрена времени.
Кстати, если вы думаете, что сможете при сборке забрать файлы из проекта (в моем случае патченый DeepSpeed), удачи вам с этим - я так и не нашел как это провернуть, пришлось их куда-то выкладывать, откуда можно потом curlом скачивать в процессе сборки образа.
"Что же ты там такое запускал" - недоуменно спросите вы?
А я просто хотел запустить сберовский ruGPT3XL_generation.ipynb.
"Ну и что же в итоге, получилось?"
Да получилось, но сколько времени и нервов я на это потратил - вам лучше не знать
Когда все запустилось - уже сил и терпения продолжать это никаких не было, так что ариведерчи датасфера, это не мой путь.
К тому же обнаружилось, что за весь этот замечательный сервис теперь просит вполне заметных денех (я как-то пропустил тот момент, думал что он еще в глубокой бете, это одна из причин, зачем я плакал, кололся, но продолжал жрать кактус - ну бета же, значит надо страдать, но за деньги - нет, спасибо), благо у меня был грант, потому семейный бюджет не пострадал, а грант в процессе всех вышеописанных злоключений заметно подтаял.
Я вот думаю, если бы он это время и усердие тратил на свой проект, возможно бы уже бросил учебу и открыл свой стартап-единорог. А так - бессмыслица какая-то. Не знаю, чему можно реально научиться без практики.
Ага ибупрофен выручает, он всегда под рукой. Раньше был нурофен, но потом оказалось, что это слишком большая статья расходов для семейного бюджета, пришлось поддержать отечественного производителя )))
На приведенных скриншотах прогнозы какие-то странные. На первом видно четкое монотонное убывание, а предсказание показывает на следующей точке резкий рост. Со вторым скриншотом тоже непонятно — второй график сверху — шел монотонный рост, который потом замедлился, а предсказание показывает какой-то дикий расколбас.
Может я что-то не понял конечно, просветите, почему так?
Здравствуйте!
У вас стек auth должен быть как тут. Может что-то не так с сервисом traefik-forward-auth? Если не будет получаться, пишите в личку или в issues на гитхаб.
Как говорится: «А что, так можно было?»
Я делал по официальной документации докера, особо не вникал почему так. В следующий раз буду устанавливать через apt, спасибо! )
Про герконы еще из детства воспоминание, как батя принес несколько с работы (конец 80х однако, где еще их тогда он мог добыть ;)), мы спаяли простую схему — геркон, лампочка и батарейка, и запрятали в картонную коробку, которую на следующий день я торжественно отнес в садик, где целый день вызывал всеобщий восторг, поднося магнитик к определенному месту на коробке, после чего лампочка загоралась. Вот такие простые развлечения были у нас в детстве )))
В статье, на мой взгляд, не хватает самого главного — как организовать процесс деплоя приложения. Одно дело сгенерировать болванку, а совсем другое — сделать удобный процесс выкатки новых версий в продакшен. И тут есть множество различных вариантов, интересно было бы посмотреть ваш подход к данной задаче.
Ну они до сих пор вроде пытаются.
https://strana-rosatom.ru/2021/03/29/pervyj-v-ssha-zavod-po-proizvodstvu-vy/
И несмотря на то, что все это обмазано архитектурным сахаром, копни чуть глубже — и опять вляпался в Express.
Думаю стоило об этом упомянуть в статье.
ps. да-да platform-agnostic — я в курсе, но скажите по-честному, часто ли для новых проектов на nest.js будут выбирать что-то отличное от дефолтных настроек?
Я думаю, что к им просто к тому времени просто не выгодно было с экономической точки зрения. Атомная экономика просчитывается на десятилетия вперед, и если они понимают, что постройка такого предприятия не будет экономически эффективной, то и смысла нет начинать.
Привет, спасибо за статью! У меня вопрос - а как сохранять результат обучения?
Какая-то слишком радужная статья. У меня не такой позитивный опыт с датасферой.
Во-первых очень часто вылазили ошибки такие: Execute error: Servant g1.1 not allocated: Internal Error. Абсолютно неинформативно - ты ждешь несколько минут пока запустится ячейка, потом раз - и эта ошибка. Причем это не ошибка в коде, потому что через какое-то время все работает на этой же ячейке.
Во-вторых, непросто поставить дополнительные пакеты или что-то нестандартное. Если в Колабе просто вначале пишешь инициализацию со всеми зависимостями и пакетами, то тут такое не пройдет - у ячейки нет прав суперюзера и все ставится в пользовательское пространство, поэтому ставится не все как надо. Соответственно просто скопировать блокнот с Колаба не выйдет, если там ставится какие-то хитрые пакеты.
Для решения второй проблемы придумана возможность создавать свое окружение при помощи Docker. Пишешь прямо в проекте свой Dockerfile со своими зависимостями, билдишь его и ставишь использовать по умолчанию. Интерфейс очень своеобразный - надо писать код dockerfile прямо в проекте, жать на кнопку Build и молиться что все соберется как надо.
Может не собраться. В таком случае думаете можно отредактировать файл и запустить снова? Нет - редактировать нельзя, надо клонировать конфигурацию (у нее при этом на конце появляется посфикс "- clone") и редактировать-билдить заново.
Еще может собраться, но не пройдут тесты - причем тесты могут не пройти просто так - пару раз у меня они не проходили просто потому что все были skipped, в другой раз один из тестов просто упал на ровном месте. В таком случае сборку перезапускаешь, а это процесс не быстрый (работает то сборка на самом базовом инстансе с1.4) и она со второго раза проходит нормально.
В общем в процессе экспериментов сборки копятся удачные и не очень и в итоге при очередной попытке что-то собрать система говорит, что место под них закончилось и нечего собирать больше не буду. Начинаешь удалять все, что не собралось и всякие промежуточные варианты - а они не все удаляются, те которые подключались и использовались - сразу удалятся не хотят, нажимаешь удалить, должно через несколько секунд появится окно что образ удален, но ничего не происходит, а образ продолжает занимать место в системе. К слову, как посмотреть, сколько выделено пространства под образы я тоже не нашел, в интерфейсе ничего такого нет.
То, что при сборке нельзя выбрать на каком виде инстансов будет производится сборка тоже нельзя - только на c1.4. Это особенно доставляет, потому что некоторые пакеты при сборке проверяют конфигурацию системы и не ставят модули для cuda, если не видят в системе GPU. Мне пришлось патчить установщик Deepspeed чтобы отключить эту проверку, а я тот еще питонист, так что это заняло немного дохрена времени.
Кстати, если вы думаете, что сможете при сборке забрать файлы из проекта (в моем случае патченый DeepSpeed), удачи вам с этим - я так и не нашел как это провернуть, пришлось их куда-то выкладывать, откуда можно потом curlом скачивать в процессе сборки образа.
"Что же ты там такое запускал" - недоуменно спросите вы?
А я просто хотел запустить сберовский ruGPT3XL_generation.ipynb.
"Ну и что же в итоге, получилось?"
Да получилось, но сколько времени и нервов я на это потратил - вам лучше не знать
Когда все запустилось - уже сил и терпения продолжать это никаких не было, так что ариведерчи датасфера, это не мой путь.
К тому же обнаружилось, что за весь этот замечательный сервис теперь просит вполне заметных денех (я как-то пропустил тот момент, думал что он еще в глубокой бете, это одна из причин, зачем я плакал, кололся, но продолжал жрать кактус - ну бета же, значит надо страдать, но за деньги - нет, спасибо), благо у меня был грант, потому семейный бюджет не пострадал, а грант в процессе всех вышеописанных злоключений заметно подтаял.
Я вот думаю, если бы он это время и усердие тратил на свой проект, возможно бы уже бросил учебу и открыл свой стартап-единорог. А так - бессмыслица какая-то. Не знаю, чему можно реально научиться без практики.
Это в теории. А на практике обычно:
1 Заходишь на хабр, чтобы дописать статью...
1а Смотришь, что новенького
1б "Я не буду это читать, только гляну коменты"
1в Обнаруживаешь, что на хабре опять кто-то не прав
1г Пытаешься доказать, что он не прав
1д Тебе доказывают с пруфами, что не прав ты
1е Тебя бомбит
2 Закрываешь хабр. Смотришь на время, уже пора спать...
Ого, уже больше года прошло, и вот первый комментарий ))
По сути вопроса - я так понимаю, что раз токены отображаются по смещениям, то длина предыдущего токена, это значение следующего токена, вроде так.
А давайте я сделаю канал, где буду снимать, как я пытаюсь писать статью на хабр каждый день по 3-4 часа? Будете такое смотреть?
Ага ибупрофен выручает, он всегда под рукой. Раньше был нурофен, но потом оказалось, что это слишком большая статья расходов для семейного бюджета, пришлось поддержать отечественного производителя )))
React Native - название технологии, я не думаю что корректно было так вот переводить.
Зашел почитать, как взламывать js при помощи js, а по факту статья про использование парсеров...
Может я что-то не понял конечно, просветите, почему так?
У вас стек auth должен быть как тут. Может что-то не так с сервисом traefik-forward-auth? Если не будет получаться, пишите в личку или в issues на гитхаб.
Я делал по официальной документации докера, особо не вникал почему так. В следующий раз буду устанавливать через apt, спасибо! )