Задать вопрос
  • Возможно ли автоматически конвертировать большой проект с Java на C++?

    @rPman
    Все верно тебе ответили - ручками.

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

    Результат будет хуже чем если все делать руками но возможно самую тупую но объемную работу можно будет взять от туда.

    upd. я бы не сбрасывал со счетов ИИ, он дает неожиданные результаты, полностью работу пока еще на него я бы не перекладывал, но вот что то простое но объемное - почему нет.

    Например у тебя много классов, большая часть методов - обслуживающая, обеспечивающая синтаксический сахар и мелкие удобства, создание каких-нибудь геттеров/сеттеров, где то обработка ошибок типовая, но без котрой никак а идентификаторы везде разные и т.п. Нейронка такие перенесет без особых проблем, только перепроверяй ее везде
    Ответ написан
    Комментировать
  • Почему у меня неправильно определяется IP пользователя?

    @rPman
    $_SERVER['REMOTE_ADDR'] устанавливает твой веб сервер, ему вы доверяете.
    Но, если пользователь заходит через прокси сервер - то тут будет выходной ip адрес этого прокси.

    Если прокси сервер не скрывает информацию о своих клиентах то
    $_SERVER['HTTP_X_FORWARDED_FOR'] и $_SERVER['HTTP_CLIENT_IP'] должны содержать ожидаемое, но это значит нужно доверять этому прокси серверу.

    Хочешь узнать реальный ip адрес, используй javascript в браузере пользователя (т.е. придется доверять уже пользователю в плане, а отреверсит ли он твой код и не подсунет что угодно).

    Cамый известный и достаточно надежный способ (его сразу отключают любые адекватные анонимизеры) - это WebRTC. Технология позволяет двум браузерам открывать прямое соединение (да еще и udp) друг с другом, а веб сервер только организует процесс. Т.е. подняв соответствующего клиента WebRTC (погугли, правда я для php с ходу готовой библиотеки не нашел) и организовав подключение клиента с этим твоим сервером, который представляется обычным веб клиентом), ты сможешь по тому, с какого ip адреса пришло соответствующее соединение, определить настоящий, даже если пользователь использует прокси.

    Это не защитит от vpn, тут никакими способами определить ip адрес пользователя не получится, потому что с точки зрения сетевых технологий, vpn - это как бы проводок пользовательского компьютера подключили к vpn-серверу, и никакие коммуникации не пойдут иначе, если пользователь не укажет иного (можно настроить маршрутизацию на выход через разные шлюзы в зависимости от геолокации, кстати этим можно воспользоваться, разместив кучу своих серверов в разных локациях и, обращаясь к ним из браузера клиента, сравнивать ip адреса)
    Ответ написан
    2 комментария
  • Лучше купить один асик с большим хешрейтом или несколько с небольшими хешрейтами?

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

    Даже если мощность и энергопотребление у одного устройства будет такими же как у других в сумме, нужно представить что будет если железо сломается. Одно устройство после поломки прекратит выдавать всю 'приобретенную мощность' а вот несколько меньших будут ломаться не одновременно, а значит потеря мощности будет только частичной.
    Менее мощные железки имеют дешевле блоки питания, их проще найти (читай быстрее - а с майнерами время = деньги).
    Несколько дешевых железок проще продать по одной чем одну дорогую и большую железку - потенциальных покупателей больше.
    Несколько железок можно разнести по разным помещениям, это кстати тоже одна из форм защиты от рисков - отключат электроэнергию в одном месте, а в другом часть железа будет продолжать работать.

    p.s. текущий момент времени (цена и динамика курса и всей криптоэкономики в целом) наихудший для инвестиций в майнинг (да и вообще в покупку), лучший момент был когда курс биткоина и альтов падал, все пророчили очередную смерть сети и т.п.
    Ответ написан
    Комментировать
  • Сколько надо иметь мощности чтобы имел смысл создать свой пул?

    @rPman
    нет конечно.
    с такими мизерными мощностями ты блок будешь искать десятилетиями, т.е. никогда

    Если у тебя нет друзей с мощностями раз в 100 выше, даже думать обэтом не имеет смысла.

    p.s. майнинг, если ты не производитель железа для майнинга, не имеет экономического смысла, и наилучшая стратегия - сразу после покупки и настройки устройства на майнинг - необходимо искать покупателя на это устройство по цене не ниже покупной (чем дольше держишь тем ниже может быть цена, на сумму намайненного).

    Большинство получают доход исключительно со спекуляций (т.е. ожиданий что курс монеты вырастит по сравнению с моментом покупки железа, т.е. в этом случае покупать железо не имеет никакого смысла, ведь то же самое можно сделать на бирже, просто купив монету), с перепродажи железа и мошенничества.
    Ответ написан
    2 комментария
  • Как организовать vpn туннели при помощи gsm модемов?

    @rPman
    Объединение каналов с целью повышения скорости существует, называется по разному - link aggregation, trunk, linux bonding (последнее - настраивается штатно в любом linux, именно этот вариант я рекомендую, правда возни в этом случае тьма - поднимать vpn, нужен полноценный tap интерфейс, для каждого модема а затем на сервере и на клиенте объединять их в bonding, само собой простым роутером тут не обойдешься).

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

    Т.е. помимо поиска железки нужно еще проверять, а скорость от их vpn адекватная? 50мбит это очень значительная скорость.

    И самое главное. А еще нужно понять, мобильные провайдеры дают маленькую скорость не потому ли, что у них самих канал узкий, и в этом случае даже объединение нескольких модемов не даст результата (с мизерными шансами можно объединять симки от разных провайдеров, надеясь что они каждый свой канал организуют, но часто бывает что все арендуют канал и железо у кого то одного, даже вышка может быть общей, какой там канал)
    Ответ написан
    Комментировать
  • Есть ли задача на распределенные вычисления, которую легко проверить?

    @rPman
    Алгоритмы майнинга криптовалют, любой, тот же биткоин изучен и разложен по полочкам вдоль и поперек.
    У всех у них это свойство - сложно считать но легко проверить.

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

    Так как у тебя академическая задача, тебе не нужно повторять именно тот самый алгоритм и настраивать инфраструктуру, просто реши задачу поиска хеша от байтового представления числа. Т.е. задача в организаци процесса - управление рабочими потоками/нодами, с раздачей заданий (интервалов в пределах которых каждый воркер будет перебирать хеши) и сбор результатов, включая обработку ошибок.
    Ответ написан
    Комментировать
  • Как скачать защищенный от скачивания PDF-файл с сайта?

    @rPman
    Скопировать через буфер можно только неформатированный текст и только текущие +-10 страниц (вручную можно но долго и нудно, потом сшивать).
    1. Реверсить их вьювер долго и дорого.
    2. Скринить странички - для личного использования подойдет (набор картинок, соединить в pdf и читать не проблема, но железные слабые читалки могут такие не прожевать), сделать не программисту можно с помощью любой автоматизации, например autoit. Логика следующая - открываешь нужный сайт в максимальном размере на полный экран (полный экран и настроить По ширине страницы), затем продумываешь свои действия (мышь/клавиатура) такими, чтобы если их повторять, копировалось все содержимое без пропусков и повторов, в данном случае это кнопка PageDown и копирование экрана (можно по количеству страниц посчитать сколько это будет действий)

    В коде autoit это будет for loop
    For $i = 1 To 100500
    ...
    Next


    шлешь нажатие кнопки
    Send('{PGDN}')

    ждешь секунду (там примерно каждые 10 страниц генерация и удаление старых) sleep

    делаешь скрин с экрана
    _ScreenCapture_Capture(StringFormat('%09i', $i) & '.png', 0, 0, @DesktopWidth, @DesktopHeight, False)

    нужно подобрать размеры чтобы лишнее не копировать
    StringFormat тут добавляет к номеру слева нули, чтобы при сшивании порядок не был 1 -> 11 -> 2 -> 3....

    по итогу работы получишь тысячу картинок, объединяешь их с помощью imagemagic
    magick *.png out.pdf

    3. способ - их pdf просмотрщик генерирует валидный html для текста (с картинками сложнее),
    css selector
    $('#pageContainer2 > .textLayer').innerHTML
    тут номер у pageContainer это номер страницы, но в один момент времени заполнены текстом только текущие видимые +- поэтому код нужно будет написать, чтобы корректно в нужный момент времени читать нужные

    Можно конечно заморочиться и запилить selenium приложение которое будет листать странички и собирать html-ку, можно в полуручном режиме прямо в браузере в консоли написать пару строчек, собирая текст в localStorage (он ограничен 5-мб кажется). html код там прямо такой (по кускам текста как они были в pdf)
    Кликать на следующую страничку - $('#next').click()

    <div style="left: 83.5342px; top: 384.732px; font-size: 20.5963px; font-family: serif; transform: scaleX(0.793798);" data-canvas-width="404.5723586629188">Стенограмма  Нюрнбергского  процесса.  Том </div>

    т.е. останется только стили добавить или скопировать их с сайта и готовая отформатированная html будет готова
    Ответ написан
    Комментировать
  • Какой брокер сообщений выбрать под задачу - принять данные по api и записать в базу?

    @rPman
    Миллион? В json? Передай хороший пинок архитектору...

    Твоя задача упирается в 2 узких места - это парксинг больших json и запись в базу.

    Паркинг делай потоковым размером, они быстрые и удобные как раз для ситуаций, когда в одном json много объектов, даже если разнородные.

    Запись в базу делай тут же либо через любую очередь, особенно если работа с базой будет асинхронной.

    Усложнять не советую.
    Ответ написан
  • Как установить самый новый совместимый firefox для ubuntu 8.10?

    @rPman
    Настоятельно не советую ковыряться со старыми версиями linux, тем более на столько старыми, там начнутся проблемы уже поиском рабочих репозитарий, поиском инструкций, настройкой сертификатов и т.п.

    Самый свежий софт для старых компьютеров настоятельно рекомендую собирать из исходников с помощью gentoo. Там это автоматизировано до пары телодвижений, как бы не говорили что gentoo это сложно, если ты дошел до ситуации, когда нужно компилировать - то это лучший. Еще говорят arch хорош, но не для слабых и старых компьютеров. Я собирал себе минисборку для eepc900 с 1gb ram (DE - awesome), оно в запущенном состоянии с GUI потребляло 50мб ram (притом что пустой ubuntu требует больше 300мб и для браузера уже на остается), т.е. оставался весь гигабайт для браузера (но учти современный интернет очень ресурсоемкий, осознаешь на сколько криворукие программисты заполонили мир, банально youtube все ресурсы затрачивает на просто загрузку видео, и их не хватает на проигрывание, когда как скачанное проигрывает в 480p без проблем а с оговорками и 720p что для 15-летней давности железа очень даже хорошо)

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

    Еще совет, не заморачивайся с компиляцией ядра - это нужно тем кто тюнит сборку для совсем отбитого железа интернета вещей. Бери готовое ядро, которое идет с их livecd.
    Ответ написан
    Комментировать
  • Как настроить или создать интернет прокси или шлюз на домашнем пк что бы с его ip заходить удаленно?

    @rPman
    Про vpn вам уже написали. Есть еще варианты, в каком то смысле проще.

    Воспользуйтесь штатным функционалом ssh сервера, который достаточно давно устанавливается из установщика windows - это socks прокси сервер, который запускается, когда клиент подключается к ssh-серверу (клиент это приложение ssh или любой другой типа того же популярного putty, он есть по до все, включая android) с опцией - динамический туннель (dynamic tunnel), в командной строке это опция -Dпорт, где порт - это порт socks прокси сервера на машине откуда запущен клиент. Так же вместе с портом, можно указать ip адрес локального сетевого интерфейса, чтобы к этой прокси можно было подключаться с других компьютеров локальной сети типа ssh user@server -D192.168.0.3:1080

    Т.е. в вашем примере ssh-сервер это компьютер вашей мамы, а ssh-клиент - ваш компьютер в другой стране, за которым вы работаете. Затем достаточно в настройках браузера включить прокси сервер и указать в качестве ip адреса ваш локальный (по умолчанию это localhost или 127.0.0.1) и порт. ssh клиент нужно будет держать включеным, пока пользуетесь интернетом. Никаких других настроек делать не придется (правда в этом случае для подключения ssh придется писать логин + пароль вручную, и чтобы это автоматизировать, нужно будет настраивать авторизацию по ключу)

    p.s. в тему крутости ssh, на самом деле он позволяет поднимать полноценный vpn но это не подходит для windows, точнее понадобится какая-либо linux машина, даже если она виртуальная.

    p.p.s. если у компьютера вашей мамы нет внешнего ip адреса, а точнее есть разные ситуации
    - серый ip
    в этом случае ip адрес периодически меняется, т.е. он есть! Тогда можно на роутере настроить dyndns (есть провайдеры в интернете, бесплатные либо копеечные, либо как опция, помню при покупке dlink-роутера, указав серийник можно было пользоваться dlink-овским сервером бесплатно ), когда вашему ip адресу выдается имя типа my_router_name.dyndns.com и вот по этому адресу нужно будет подключаться. Подключение такое будет обрываться когда провайдер сменит адрес (обычно раз в сутки) и переподключение будет доступно через минуты.

    - провайдерский nat (очень часто мобильные провайдеры)
    это видно, если ip адрес роутеру выдают из локальной сети. В этом случае ip адрес один на несколько клиентов провайдера, и даже upnp не настроить, тут мало что поможет, от таких конфигов лучше держаться подальше, ищите vpn сервисы, или хотя бы тот же hamachi (у них интересная система настройки прямого подключения между компьютерами и решения проблем с nat), они позволят объединить удаленные компьютеры в единую локальную сеть и уже с ее помощью выходить в интернет (тут нужны еще настройки, в зависимости от способа подключения, типа internet shareing и настройка маршрутизации, но socks прокси через ssh ничего дополнительного не потребует).

    Могу и тут предложить использовать ssh как универсальную палочку выручалочку. Если ваш компьютер в другой стране имеет ip адрес, вы можете дополнительно установить уже на этом компьютере ssh сервер (т.е. у вас будут 2 сервера один у мамы другой у вас), затем на машине мамы вы настраиваете bat-скрипт, который в бесконечном цикле будет пытаться подключиться к вашей машине не дома, для настройки туннеля перенаправления портов
    :loop
    ssh user@сервер_не_дома -R порт_на_машине_не_дома:localhost:22
    ping -n 2 localhost
    goto loop

    тут порт_на_машине_не_дома это порт, по которому с машины не дома можно будет подключиться к ssh серверу вашей мамы, подключаться будет через соединение ssh и соответственно ip адреса вашей маме не понадобится (но он понадобится уже на вашей машине не дома). Данный скрипт будет бесконечно пытаться подключить ssh с настройкой туннеля, делая между попытками паузу в пару секунд (это команда ping). Скрипт нужно прописать в автозапуск (лучше через task scheduler, его тогда не будет видно)

    само собой в этом случае авторизацию по ключу придется настраивать (речь идет о подключение с компьютера вашей мамы на ваш сервер не дома)

    Повторюсь, все это будет работать на windows, и максимум настроек - это перенаправление портов на роутере и беспарольную авторизацию по ключу
    Ответ написан
    Комментировать
  • Нормально ли хранить игры на hdd, а запускать с ssd?

    @rPman
    Тебе все ответили по поводу не совсем верной постановки вопроса.

    Если речь о хранении на hdd установщиков игр а устанавливать сами игры на ssd то да, это хороший вариант, ssd не выгодно использовать для хранения данных, которые редко используются или используются только для последовательного чтения.

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

    ---------------------------------------------------

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

    Символическая ссылка для программы - это каталог (или файл, если в пределах одного диска или другие файловые системы, например в linux), который выглядит как обычно, но в реальности отображает содержимое того каталога, на который ссылается символическая ссылка, например на другом диске (в windows с помощью виртуальных дисков .vhdx - с оговорками можно выкрутиться и разместить файлы в сети, но будет медленно или опасно для данных, если машина будет выключаться, так же можно использовать iscsi если есть nas с его поддержкой или linux, это штатный механизм доступа к дискам по сети).

    После установки игры на ssd (без ее запуска), заходишь каким-либо файловым менеджером в каталог игры (рекомендую far commander, он и симлинки может создавать кнопкой), ищешь объемные каталоги редко используемых данных, например карты, до которых ты еще не дошел, видеофайлы и прочий контент, часто это можно определить по названию каталогов или напрямую по типу файла) и сначала перемещаешь эти файлы на другой диск (в твоем случае ssd) а затем создаешь каталог-симлинк на скопированное с тем же именем, какое было у оригинального каталога.

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

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

    Постарайся не переносить ресурсные файлы игр (текстуры и модели).

    Постоянно таким садамаза заниматься не стоит, но как временных шаг, пока не купишь нормальный диск, вполне рабочая схема.
    Ответ написан
    Комментировать
  • Как стереть данные со сбойного SSD?

    @rPman
    Попробуй загрузиться в linux (любой livecd/liveusb не самый древний) и с помощью утилиты hdparm (ключ -r) отключить флаг read-only
    узнать состояние (в примере диск /dev/sda - поменяй на тот что нужно)
    hdparm -r /dev/sda
    # /dev/sda:
    #   readonly      =  0 (off)

    сменить на 0 (off) ключ -r0

    Следи чтобы диск не смонтировался автоматом и размонтируй его (не из файлового менеджера а командой umount)

    данные на диске уничтожай удалением разделов и отправкой trim если там не миллионы в биткоинах
    blkdiscard /dev/sda
    ну или чем то типа
    sudo dd if=/dev/urandom of=/dev/sda bs=128k conv=sync,noerror

    !!! трижды перепроверь что указал верный диск вместо /dev/sda, эта команда без подтверждения удалит все данные на диске

    p.s. шансов мало, но попытаться можно
    Ответ написан
    Комментировать
  • SSD поставил сам на себя пароль. Что делать?

    @rPman
    Не делай ничего сам если тебе дороги данные на диске, неси в сервис, пусть специалисты покопаются, оценка стоимости обычно дешевая, а там смотри что тебе скажет спец.

    Если самому, то начни с загрузки с другого носителя (например liveusb/livecd любую реаниматолку или просто linux) и смотри видны ли данные на диске. Сам диск зашифроваться не может, мало того это достаточно длительная операция, незаметить невозможно. Вирусы локеры ведут себя по другому, и им нужно дать инструкции пользователю типа - переведите бабки тогда...

    p.s. С высокой вероятностью что то еще было, но у подавляющего большинства пользователей возникает в памяти черная дыра, и включается пластинка 'я ничего не трогал оно само'.

    Вспоминай что делал перед этим с прошлой загрузки. Какие программы ставил, чистилки, оптимизаторы, удаляторы, виртуализаторы и все что угодно.
    Ответ написан
    1 комментарий
  • Как можно хранить большие объемы данных на sd карте, которые потом можно также прочитать?

    @rPman
    Все зависит от того, какие типы данных в полях, постоянные ли они от строке к строке и много ли 'пустых' значений или точнее, значений с переменной длиной (строки например).

    Плюс, каким образом нужно проводить поиск данных, т.е. очевидно что читать все тебе последовательно не нужно, а значит нужно делать выборку по какому то условию.

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

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

    Данные хранишь в файле так, как они хранятся в памяти ардуинки (особенно если они больше нигде использоваться не будут, ну или заранее продумай в каком формате числа будешь хранить BE/LE.

    Каждая 'строка' в файле у тебя будет фиксированной длины (можно еще и выровнять на количество байт степени двойки, что оптимизирует операции умножения вычисления позиции, для ардуинки может быть актуально под какие то задачи) и разделители не нужны. Т.е. по номеру строки и номеру колонки можно высчитать смещение данных в файле простым умножением и сложением.

    Если нужны запросы по значению, пиши рядом индексный файл, где храни последовательность пар хеш_значения->номер_строки_в_файле, при этом если происходит коллизия, делай в этом файле еще записи с тем же хешем (рядом, чтобы пришлось делать только два лишнего чтение). Значения сортируй по хешу, поиск нужного значения делай тупой дихотомией (метод деления пополам или бинарный поиск) - как нашел значение, читай записи вверх, а потом вниз от него, пока есть коллизия хеша.

    Этот подход очень прост в реализации, не требует оперативной памяти от слова совсем (только буферы на работу с файловой системой), при хорошо подобранном хеше с малыми коллизиями, даст 'логарифм' чтений при поиске данных по значению, но не дает красиво править индекс и индексные данные (так как индекс нужно будет сортировать) т.е. подходит там где сами индексы и данные будут готовить на нормальном устройстве без дефицита ресурсов.
    Ответ написан
    Комментировать
  • Какие последствия за использования Cloudflare сейчас в РФ?

    @rPman
    Каким боком технология касается юридической сферы?
    ты запускаешь свой сайт на американских процессорах, значит он американский?

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

    p.s. в России нет закона и порядка, тут действует правило - не затрагиваешь ни чьих интересов - тогда по закону, иначе по понятиям.
    Ответ написан
    1 комментарий
  • Есть ли какие есть варианты api для отправки файлов?

    @rPman
    http (тип upload - multipart/form-data), самый простой и функциональный, поддерживается всеми и везде.

    Например прием файла на php тут разные методы и примеры использования, полистай примеры еще и по ссылкам.
    Ответ написан
    Комментировать
  • Утечка DNS или как соц. сети узнают мое местоположение?

    @rPman
    Просто небольшое уточнение, российские провайдеры подменяют вызовы 8.8.8.8, по крайней мере я слышал об этом. Т.е. делая запрос <случайный хеш>.instagram.com и отсылая этот же хеш на сервер с таймингами, позволяет серверу увидеть, откуда к dns делали запрос а там либо твой ip либо ip российского провайдера.

    dns нужно тоже проксировать

    Ну и еще момент, в браузерах secure dns уже есть и возможно на смартфоне он настроен по умолчанию, т.е. игнорирует настройки смартфона, а там может крупные сети договорились с cloudflare (кажется там их настроен) о детекте геолокации
    Ответ написан
    Комментировать
  • Как создать свой чат бот(дообучить модель) на базе собственных знаний(ссылок на ресурсы)?

    @rPman
    первые же запросы с гугла (с поиском по хабру)
    https://habr.com/ru/articles/755114/
    https://habr.com/ru/companies/neoflex/articles/722584/
    https://habr.com/ru/companies/wunderfund/articles/...
    https://habr.com/ru/articles/757086/

    Ключевые слова finetuning, peft модели llama, mixtral, google gemma (вышла буквально на днях, выглядит неожиданно хорошо для 2b/7b)
    Напрямую обучать модель новым знаниям сложно, и дорого а датасет это ты сам собираешь. Есть лайфхак - какими либо способами, на основании контекста формируют запрос в классическую базу данных (например реляционную) делают поиск, а результат вставляют в окно контекста (добавив сопроводительный текст, описывающий это как знания, на которые нужно опираться) и в результате модель получив эти данные, будет их использовать (это самое странное и непонятное в llm-ках). Само собой ВСЕ данные пихать в окно контекста не имеет смысла, оно маленькое а в открытых моделях еще и слабосвязное.
    Гуглим llm rag, например https://habr.com/ru/companies/wunderfund/articles/...

    p.s. просто и красиво не будет
    Технология llm сырая, точнее в ней баг в идеологии, подразумевающий вероятностный результат, т.е. правильный с некоторой вероятностью, которая даже у топовых моделях (не доступных для дообучения обывателю) в среднем на специализированных бенчмарках - 60%-80%, а те модели что доступны, дают верные результаты с с еще меньшей вероятностью.

    Настоятельно рекомендую смотреть в сторону mixtral (для людей доступны модели 8x7b, работают по скорости как 7b а по качеству как 70b), инструкций по дообучению не густо, придется прогружаться в тему, при которой таких вопросов как выше не будут возникать, но односложно ответ не дать.
    Ответ написан