Ответы пользователя по тегу Искусственный интеллект
  • Как запустить обучение с deepspeed у себя на пк?

    @rPman
    deepspeed это про обучение на кластере, т.е. вместо покупки одной дорогой серверной видеокарточки, ты поднимаешь кластер из дешевых десктопных и по уму должен получить экономию в деньгах.
    Ответ написан
  • Какая нейросеть лучше подойдёт для распознавания слов из mp3?

    @rPman
    whisper от openai, есть версия для процессора от ggreganov whisper.cpp
    Ответ написан
    Комментировать
  • Как происходит пошаговое обучение языковых моделей азам?

    @rPman
    Ответ в виде короткого гайда ты не получишь, он не влезет в формате qna, да и некому тебе его дать.. гугли, все есть в интернете.

    Для начала, чтобы повторить свою языковую модель, которая начнет показывать признаки интеллекта (т.е. нейронка построит внутри модель человеческого интеллекта), нужно минимум десятки миллионов долларов (это оптимистичная оценка). Это при условии наличии специалистов (команда), данных (все бросились парсить интернет и те кто эти данные хостят внезапно осознали что их данные имеют цены) и мотивацию. И да ее качество, в лучшем случае будет на уровне gpt3.5 от openai...
    Например у богатейшей в мире компании google, создавшей собственно алгоритм transformer, стоящий в основе современных llm-ок, имеющей огромные ресурсы, собранные данные со всего интернета, собственное железо (их TPU на порядок энергоэффективнее видеокарт, и развиваются уже десятилетие) - догнать по возможностям openai gpt4, не получилось!

    Причина - gpt стала показывать такие признаки при значительном увеличении количества как параметров нейронной сети (миллиарды) так и обучающих данных (трилионы токенов). Чтобы это все обработать в разумные сроки (месяцы-годы), нужны суперкомпьютеры на основе nvidia видеокарт, от монополиста, удерживающего рынок так что цены на это дело 10х от возможных (или даже 100х), плюс санкции добавляют еще Nx к цене да и не найти адекватного оборудования.

    НО! можно взять готовую нейронную сеть (ключевое слово pretrained или base или completion приписка у тех кто публикует такие сетки бесплатно) и использовать их токенизер (между прочем токенизация, тоже не простой процесс, поэтому лучше брать готовый) и finetuning на своих данных. С некоторым везением, результата можно будет добиться с 100-кратно меньшими денежными затратами (была статья где перец за 100$ дообучил llama7B до симуляции чата своих друзей). Помним, что если в обучающей выборке не было твоих знаний (не фактов а именно умений и пониманий) то дообучить этому будет сложнее и скорее всего итоговый результат - сеть начнет забывать что ранее знала и галлюцинировать еще сильнее. Тюнинг обычно используют чтобы повысить качество уже имеющихся умений и определить формат общения (например обучить модель общаться не в форме чата а в форме инструкций). Качество данных (соответствие обучающей выборке) - в этом случае имеет наиважнейшее значение.

    Ну, и есть разные алгоритмы - ключевые слова для гуглинга - finetuning, peft, rhlf. Есть алгоритмы поверх llm-ок, не трогая их веса можно повысить возможности с помощью RAG...

    Лучшие сетки с доступными весами на текущий момент, для обучения и работы с которыми хватит домашних видеокарт - llama3-8B (вышла 3 дня назад, всех шокирует, особенно 70B), openchat35-7B (на основе mistral)
    Ответ написан
    Комментировать
  • Как запустить AI-модель с Hugging Face?

    @rPman
    Выбираешь модель, в описании ищешь code examples или documentation, вот тупо первая же модель по твоей ссылке naver-clova-ix/donut-base-finetuned-docvqa и тут же по ссылке пример кода использования

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

    Если модель небольшая, считанные миллиарды параметров, то она будет без особых проблем запускаться на процессоре, если больше, то рекомендуется gpu от nvidia (с некоторыми не самыми слабыми amd реально но будет много возни).

    Требования к RAM обычно 2х-4х от размера модели в параметрах (т.е. 7B будет требовать порядка 14Gb-24Gb ram), но в некоторых случаях есть методы квантизации (например gpt квантизуют с помощью bitsanbytes) в этом случае требования к ram падают до количества параметров (т.е. 7Gb-9Gb для 7B модели)

    p.s. если повезет, возможно выбранная тобой модель может быть запущена с помощью llama.cpp (там и мультимодальные VA модели уже запускают), с ней есть шанс разместить часть весов в GPU а не все, т.е. это имеет смысл если оперативной памяти gpu чуть чуть не хватает.
    Ответ написан
    Комментировать
  • Можно ли с ChatGPT создать отчеты и графики на основе GoogleSheets?

    @rPman
    Ищи плагины к chatgpt, не удивлюсь если кто то такой сделал и для табличных процессоров. Напоминаю что chatgpt это не просто gpt, это сложный продукт и пользоваться им не просто.

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

    p.s. я пользовался сторонними площадками типа coze, там и плагины и gpt4... ничего красивого и хорошего с теми же графиками там не получилось
    Ответ написан
    Комментировать
  • Можно ли заставить LLama2 выполнять действия?

    @rPman
    И нет и, может быть, да. Помимо llama существует лучше модели, например mistral и основанные на нем типа openchat35 или лучше mixtral (он неожиданно умный и скорости как 7b) или или еще лучше от databrix (по скорости как llama30b).

    У разработчиков языковых моделей например есть chat версии, есть instruct, а есть base. Общий смысл каждой определяется тем, на какое именно использование их заточили. Например instruct позволяет описывать инструкции на естественном языке и главное получать ответ тоже на естественном языке, со всеми вытекающими от сюда неудобствами (api предполагает стандартизацию форматов вывода). chat ожидает что с ним будут общаться в формате user: xxx, ну а base модели изначально работают только как completion, и их обычно дообучают до своих форматов и наборов знаний.

    Кстати, к примеру модели, которые обучали программированию (а это почти все, ищи в бенчмарках HumanEval, потому что openai говорили что именно с этого начинали свою модель обучать и это очень было ей полезно), можно буквально попросить давать ответ в виде json, описав в промпте его формат и оно будет пытаться это делать, точно помню что прбовали за основу взять принцип - модель генерирует готовую программу, решающую вашу задачу, бакэнд ее запускает и выдает ответ и так на каждый запрос. Но чем глупее и проще модель, тем с большей вероятностью она будет отходить от строгого формата, а значит бакэнд приложение, которое будет обслуживать уже твой api должно ожидать эти расхождения и обрабатывать их не как ошибка (например лишнее текстовое описание типа "вот вам ответ в формате json: ...".

    Так как llm это посимвольная (по токенам точнее) генерация ответа, на каждом из них, в момент когда происходит выбор следующего токена, можно вставить свой алгоритм, ограничивающий доступный список своими, по своему правилу. Например можно описать регулярное выражение, которое будет применяться к сгенерированному тексту плюс выбираемый токен и если оно не подходит, отказывать в выборе этого токена. Например какая то реализация этого есть в llama.cpp ищи grammar, это ключ у api вызова к server.

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

    Есть общепринятые лайфхаки, повышающие качество ответа. Это добавление примеров (вопрос+ответ+вопрос+ответ+вопрос+...) т.е. one-shot/multi-shot, именно так слабые модели могут встать по бенчмаркам с zero-shot у сильных моделей, без примеров. Или попросить в запросе модель поразмышлять (think step by step), надавить на эмоции (найти ответ очень важно для меня, от этого зависит моя жизнь), ценой места в окне контекста. Еще есть подход, делать один и тот же запрос (или кстати слегка менять prompt) много раз, и сделать какой то механизм валидации ответа (например большая часть одних и тех же ответов считать верной) - как защита от галлюцинаций (был пример когда модель заставили миллион раз генерировать программу, запускать ее и проверять результат - так сделали реальное научное открытие)

    НО! Просто не будет.
    Ответ написан
    Комментировать
  • Какой генератор изображений посоветуете для генерации изображений по описанию на основе набора картинок?

    @rPman
    Необходимо дообучить моделью Использовать stable diffusion LoRA (гугли: создание stable diffusion lora), это механизм сохранения информации дообученной модели таким образом чтобы она занимала мало места, всякие UI типа от automatic1111 предоставляют для этого интерфейс.

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

    Чтобы идентифицировать свой стиль, добавляешь в промпты соответствующую пометку типа
    <lora:название_модели:коэффициент_влияния_например_1>


    Там их даже можно смешивать, но чем больше мешаешь дообученные модели тем хаотичнее результат.
    Ответ написан
    Комментировать
  • Возможно ли автоматически конвертировать большой проект с Java на C++?

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

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

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

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

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

    @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), инструкций по дообучению не густо, придется прогружаться в тему, при которой таких вопросов как выше не будут возникать, но односложно ответ не дать.
    Ответ написан
  • Где обучить нейросеть?

    @rPman
    vast.ai есть даже оплата криптовалютой
    фишка в том что там можно подобрать десктопные видеокарты с меньшим объемом vram если подходят под твою задачу (400млн float/double это 1.6/3.2GB vram + память под обучающую выборку + сопроводиловка 10%-20%), они дешевле по определению серверных.

    Дешевле, только приобрести видеокарту себе и собрать свой комп (я говорю про ситуацию когда тебе не нужен суперкомпьютер, как только у тебя производительность выходит за рамки нескольких десятков gpu то там возникают другие проблемы)
    Ответ написан
    5 комментариев
  • Где хранится информация и откуда её берет нейросеть для ответа?

    @rPman
    Добавлю, на основе нейросети, создали специальное (сложное) приложение chatgpt. которое позволяет подключать плагины, являющиеся источниками данных (подробно как именно openai обслуживает плагины не известно, есть только общие слова, так как решением о том когда вызывать плагин и какие данные в него слать принимает сама модель, но в этом и был смысл, ты не разрабатываешь приложение - ты описываешь его а модель сама разбирается по словесному описанию, как этим пользоваться).

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

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

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

    @rPman
    Универсально таких нет

    Это значит тебе нужно набрать свой обучающий датасет из изображений, которые будут использоваться в твоей задаче, и вручную их разметить, указав, где правильно удалился фон, затем создать нейросеть классификатор изображений и обучить ее на своем датасете. Инструментов полно но если хочешь (а ты захочешь) использовать gpu для ускорения, то скорее всего это будет nvidia и pytorch (есть не только для питона)

    Какую именно выбрать датасет это вопрос исследования, какая подойдет для твоей задачи. Например если ты будешь обучать бинарный классификатор - хорошо/плохо (или при разметке ты будешь оценивать по какой то шкале например от 0 до 10 результат работы) то это одна задача, но ты можешь к примеру подавать на вход сразу все четыре изображения, и сеть должна выдать делить на 4 класса полученный комплекс, соответственно каждому изображению... совет, добавляй ко входу еще и исходное изображение.

    Можно предварительно делать вычитание (или деление) исходного и результирующего изображений, так нейросети легче будет понимать что было вычтено и соотносить его с исходным

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

    @rPman
    Вроде бы openvino может работать без tensorflow (и скорее всего умеет работать с intel ускорителями), вот пример их модели распознавания эмоций
    Ответ написан
    1 комментарий
  • Как переубедить нейросеть (чтобы данные из промпта считались более важными)?

    @rPman
    С LLM у тебя только два варианта - добавлять информацию в запрос, а в случае с противоречиями, тюнить и усложнять подводку, типа если ты хочешь чтобы везде где сетка использует цвет красный она говорила
    бибип:
    Дальше в ответе вместо цвета - 'красный' ты должен писать бибип, с учетом правил русского языка, рода и склонения. Назови три цвета у светофора

    Три цвета у светофора: бибип, желтый и зеленый.



    Так вот тюнинг, очень противоричивая технология, в каких то случаях она значительно улучшает результат, есть даже ускоренный тюнинг, затрагивающий очень небольшой процент весов или даже только веса векторов запроса но не самой сетки (есть открытый проект peft с поддержкой практически всех доступных моделей), к сожалению openai не дает красивого доступа к этому, хотя для младших моделей типа gpt35turbo или davinci у нее такой механизм есть.

    Этот механизм имеет недостатки, из-за проблемы 'катастрофического забывания', чем больше данных ты пытаешься добавить в модель через дообучение, тем больше она забывает ранее выученных (с этим борются подмешиванием данных из изначальной обучающей выборки но это не так просто)
    Ответ написан
    Комментировать
  • Нейросеть, которая по ссылке из ютуба смотрит видео и отвечает на вопросы по нему?

    @rPman
    Не существует (публично) ИИ, работающего с видео, но говорят что следующий ИИ обучать будет именно на них.

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

    Если нужен хардкор, то можно брать видео, разбирать по кадрам и скармливать существующим алгоритмам типа SAM, но не уверен что можно полученный поток данных с пользой распознать.
    Ответ написан
    1 комментарий
  • Почему рнн нейронка не обучается нормально?

    @rPman
    Потому что предугадать температуру и скорость ветра по историческим данным простым способом невозможно.

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

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

    Нейронная сеть нормально бы могла бы работать в каких то пределах (например часы) если бы информация была бы полной (не было бы моментов времени когда данные - неизвестны), так же понадобятся 'сырые' показатели а не усредненные (точные сложнее найти, все что доступно это усредненные за период) и скорее всего чтобы получить нормальный результат, понадобится большая и сложная нейронка и большие вычислительные мощности
    Ответ написан
    9 комментариев
  • Аналог chatGPT для работы с текстом?

    @rPman
    Главный конкурент openai - Claude2 от anthropic, у них контекст порядка 100к токенов (но хуже chatgpt4, точнее там есть где превосходит, типа питон или математика)

    Все остальное создано на основе api openai, и если тебе нужен какой то функционал, лучше использовать api
    Ответ написан
    Комментировать
  • Есть ли нейросеть, которая выявляет закономерность?

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

    Искать например на huggingface

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

    Вот например
    Ответ написан
    Комментировать
  • Существует ли готовая нейросеть, которая составляет текстовое описание изображения?

    @rPman
    Пощелкай по этим моделям
    Ответ написан
    Комментировать
  • Как научить нейронку выигрывать в моей Phaser.js игре?

    @rPman
    Если RL для тебя сложно, используй менее эффективный но очень простой подход - генетический алгоритм.
    Это очень тупой и простой для реализации подход, ты реализуешь свою игру в виде метода (ты его всеравно должен бы сделать для RL), с помощью которого ты будешь тестировать своего бота:
    * независящего от реального времени (т.е. внутренний таймер есть но игра проходит максимально быстро в реальном времени без пауз)
    * фиксированным сидом для случайных событий (т.е. повторный запуск с теми же параметрами должен выдать тот же результат)
    * пропускающего вывод графики
    * на вход которого подается твой алгоритм управления (не важно чем он будет, главное чтобы он однозначно описывался какими то числами), т.е. управлением занимается метод который ты передашь в вызове
    * на выход этот метод выдавал бы давал оценку, на сколько хорошо выбранный алгоритм прошел игру (0 - умер, и плюс число за звезду)
    * добавляешь в этот метод лимит по внутреннему времени (т.е. чтобы - возвращало за невыполнение задания, в твоем случае это не собрал звезды)
    * можно привязать оценку ко времени, например разделить собранные звезды на затраченное время (добавь какой-нибудь коэффициент влияния времени на итог).

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

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

    Задача будет решена, но времени (вычислительных ресурсов) для этого может потребоваться очень много.

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