Ответы пользователя по тегу Нейронные сети
  • Что выбрать за архитектуру LLM для обучения с нуля?

    @rPman
    У тебя ошибка в постановке цели - 'обучить с нуля'.

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

    Для обучения модели, по мощности сравнимой с gpt3.5 нужно 10^26 степени flops (очень приблизительная оценка, скорее всего занижена, так как все очень зависит от использованного оборудования), посчитайте необходимое количество GPU и энергии, для того что бы достичь этого объема вычислений (для примера бери nvidia a100 80gb считая что ее мощность 20tflops это 2*10^13, да так считать не правильно, и в зависимости от задач число можно как увеличивать в 20 раз так и уменьшать в разы).
    ------------

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

    НО! Ни одна компания, создающая топовые модели не делится исходными данными (это похоже стало по цене сравнимо с затратами на вычисления), а те что делятся - очень слабые, хуже openai gpt3.5 это уже давно стало минимальным эталоном, все что хуже не будет адекватной instruction.

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

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

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

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

    В мире не так много компаний которые в принципе на это способны - в россии например на это способны богатейшие только сбербанк (гигачат) и яндекс (yandex gpt), последние этим занимаются давно (за долго до появления chatgpt) и единственная их проблема - не хватает денег (и блокировка доступа к покупке оборудования), и возможно специалистов.
    Ответ написан
    7 комментариев
  • Возможен ли запуск нейросети на видеокарте для майнинга?

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

    Если есть opencl запустить то можно, с помощью llama.cpp можно запускать на любой видеокарте, причем даже если она не nvidia, и на встройках.. вопрос на сколько быстро это будет.

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

    С другой стороны, закупить несколько, весь софт для выполнения умеет распределять нагрузку по нескольким.
    Ответ написан
    Комментировать
  • Какая нейросеть оживляет картинки?

    @rPman
    Stable video diffusion, будет работать на 12-16gb gpu (например nvidia gtx 4060ti стоит 59т.р., а 3060 12гб - 35т.р. ), работает неплохо, но на сколько я знаю он работает от картинки а не запроса (т.е. если ты задаешь запрос, она генерирует из него только стартовать картинку).

    Облачные ресурсы дороже на порядок, как ни крути.

    Кажется Runway позволяет платить через alipay в России.

    p.s. Кандинский от Яндекса ты не использовал?
    Ответ написан
    Комментировать
  • Сравнение голосов - программы и нейросети - есть ли такие?

    @rPman
    https://huggingface.co/models?other=speaker-recognition как отправная точка для поиска готовых моделей (можно поиграть с поисковым запросом)
    Ответ написан
    1 комментарий
  • Может ли нейросеть определить на изображении отсутствие всех объектов, кроме одного?

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

    @rPman
    Адекватных и универсальных мультимодальных ИИ (с модальностью - изображения) на текущий момент не существует.

    С очень большой натяжкой можно считать топовые openai/claude/google/(может китайский qwen но они совсем внизу), с поддержкой изображений подходящими, в интернете даже гуглятся тестовые helloworld, но проблема в том что когда доходишь до реального использования, сил на то чтобы объяснить ИИ что тебе нужно и исправлять его ошибки уходит БОЛЬШЕ чем если бы ты делал это сам.

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

    @rPman
    Нужны видеокарты, суммарным объемом 1024гб. тут только специализированные, найти в продаже в странах под санкциями нереал, рынок пустой был уже в 2020-ом. Цены тут 5х от мировых.

    Квантизация тут тоже есть, vllm самая эффективная реализация, поэтому если тебе не нужно дообучать, а только исполнение, то пойдет 8bit квантизация.
    -------

    На процессоре с помощью llama.cpp, где-нибудь 10-20 секунд на токен (кстати повышается в несколько раз при batch запросах, когда тебе нужно обработать сразу много prompt-ов).

    Тебе нужна серверная материнка (хоть прошлого поколения, важна оперативная память), размер памяти минимум 256гб (4битная квантизация, потеряешь в качестве), лучше 512гб. К сожалению рынок тут только БУ со всеми вытекающими от сюда ценами и гарантиями.
    --------

    Можно запускать на нескольких десктопах!
    Год назад в llama.cpp портировали MPI реализацию, поддержка запуска на нескольких нодах (как пример нам было 8 raspberrypi и llama65b) поэтому приобрести 4 компьютера по 64-128гб не проблема, процессор не самый топовый, какой-нибудь AMD Ryzen 5 9600X/7600X (6-ядерный, лучшая производительность singlethread дешевле $300/$200), на сколько я понял, упирается все в сеть, поэтому сверху 10Gb ethernet адаптеры в придачу (они относительно дешевые).

    Каждый из компьютеров обойдется примерно в 100т.р. (можно ужаться и набрать по 70т.р. но там и процессоры по слабее и память по медленнее, но не значительно), и таких нужно 3-4 штуки.

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

    Есть еще один экстремальный вариант, он не требует почти никаких особых затрат, любая даже самая слабая железка с любым количеством RAM (пусть условно 16гб-32гб будет, контекст хранить нужно) но с максимально быстрым ssd nvme диском (или несколькими в raid0). llama.cpp штатно умеет работать с моделями напрямую с диска (mlock режим), будет считывать всю модель по одному разу на каждый токен.

    Например 4 ssd диска (проходной apaser за 2.5т.р. но лучше что то по быстрее с pci-e 4.0) на скорости 2гбайта/с (само собой есть быстрее) с соответствующими pci-e контроллерами обойдутся в считанные 16-25т.р., полученный 'монстр' будет считывать всю модель с 8битной квантизацией за 30-15 секунд, и уже вопрос, успеет ли процессор на такой скорости модель считать.

    p.s. осторожно, ssd на 'чтение' тоже не бесплатно работает, это тоже изнашивает ресурс, только не так быстро как запись, может в тысячу раз медленнее, может в десятки тысяч.
    Ответ написан
    6 комментариев
  • Как загрузить файл через API в диалог Claude?

    @rPman
    превышается максимальное количество токенов

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

    Человек точно так же не сможет переварить за один раз большой объем информации, llm-ки тут наследовали эту ограниченность и невнимательность.

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

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

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

    Метод/класс/файл это не 'или', собирать информацию нужно параллельно на всех уровнях.

    Можно итеративно задавать ИИ вопросы, добавив, информацию о каком методе/классе/файле необходимо для ответа на вопрос, замена этот уменьшенный кусок на исходный файл. Речь не идёт о непрерывном чате, внутри каждый запрос это полное окно контекста и лучше самому выбрать, что именно в него должно попасть, т.е. каждый раз формируется новый запрос .. но так как облачные ИИ стали добавлять управление кешем, можно создать несколько сессий, одни собирают информацию по частям, задавая разные вопросы к одному и тому же стартовому контексту, другие работают с агрегированной информацией, третьим с человеком...
    Ответ написан
    2 комментария
  • Возможно ли написать свой chatGPT и как?

    @rPman
    Для начала, llm-ки, начинают показывать свойства ИИ (т.е. начинают строить внутри себя модель, которая уже начинает себя как то вести а не просто синтаксически и даже логически обоснованный бредогенератор, т.е. хуже gpt35 если что) - это 10^26 flops вычислений, оценка приблизительная, когда читал про исследования на каких величинах это начинается, погрешность была на пару порядков. Мало того, десктопное железо тут не подходит, там требуется огроменное количество оперативной памяти GPU (про CPU даже не заикайся, на нем даже просто запуск - садомазохизм).

    Посчитаю за тебя - одна современная видеокарта 4090 дает 80Тфлопс (даже пусть 100 но так неверно, потому что реалии на пару порядков хуже но проигнорируем это) это 10^14 операций в секунду, т.е. только чтобы однократно обучить одну llm (а это обычно делают много раз, меняя гиперпараметры и обучающие данные) тебе потребуется 10^(26-14) секунд или 10^12 секунд или 31709 лет на одной видеокарте... приобретая чуть больше видеокарт, процесс можно ускорить почти линейно (да там начинаются проблемы уже на тысячах gpu, но они решаются спец-железом, спец-алгоритмами и спец-специалистами, и главное первое и последнее с рынка как коровой слизали крупные компании)... к сожалению эта наиважнейшая и самая крутая технология нашего времени требует минимально для старта десятки миллионов баксов вложений а лучше сотни.

    Но если все же хочешь взять готовое, разобраться и предоставить это как ваша работа то пожалуйста, гугл: gpt llm training from scratch detailed guide
    первая же ссылка - https://youssefh.substack.com/p/training-gpt-2-fro...
    Ответ написан
    2 комментария
  • Какие могут быть возможные причины изменения ответа LLM на один и тот же запрос?

    @rPman
    Это основа работы алгоритма llm gpt.
    При выборе следующего токена ответа, алгоритм выбирает не тот что с большей вероятностью , это параметр temp=0 (это стабилизирует ответы но значительно ухудшает из качество) а с некоторым разбросом, чем выше temp тем больше разброс выбора и 'креативность' ответа, чаще это вода в тексте, так как с ней проще разнообразить.

    На сколько я помню если нужно и temp выше 0,и стабильность, то фиксируй seed генератора случайных чисел...
    Ответ написан
    1 комментарий
  • Вопрос про настройку LLM сетей?

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

    p.s.
    скрывались за модификатором доступа private

    доступ к private members имеют ваши методы, в вашем классе, порожденном от целевого, это почти не зависит от языка программирования и используют даже там где классов в привычном понимании нет.

    p.p.s. по названию свойств могу догадаться (я же почти телепат), что используется llama.cpp, только там я видел выбор mirastat алгоритма как опция
    Советую полистать хелп к llama.cpp llama-cli (раньше он назывался main) llama-cli --help там все это есть но чуть чуть названное по другому. Напомню что llama.cpp все еще разрабатывается, документация к нему не всегда понятна а многие вещи приходится вытаскивать из issue и discussion проекта на github и даже из исходников.

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


    upd. я сделаю это за тебя, спросив у бесплатного anthropic
    claude.ai
    Исходя из содержимого файла помощи, следующие ключи соответствуют указанным переменным:

    1. SamplingPipeline: Возможно, `--samplers` и `--sampling-seq`
    2. PenalizeNL: `--penalize-nl`
    3. MirostatEta: `--mirostat-lr`
    4. MirostatTau: `--mirostat-ent`
    5. Mirostat: `--mirostat`
    6. PresencePenalty: `--presence-penalty`
    7. FrequencyPenalty: `--frequency-penalty`
    8. RepeatLastTokensCount: `--repeat-last-n`
    9. RepeatPenalty: `--repeat-penalty`
    10. Temperature: `--temp`
    11. TypicalP: `--typical`
    12. TfsZ: `--tfs`
    13. MinP: `--min-p`
    14. TopP: `--top-p`
    15. TopK: `--top-k`
    16. AntiPrompts: `--cfg-negative-prompt` или `--cfg-negative-prompt-file`
    17. LogitBias: `-l`
    18. MaxTokens: `-n`
    19. TokensKeep: `--keep`

    Описание на русском языке:

    1. `--samplers`: Выборочные алгоритмы, которые будут использоваться для генерации в указанном порядке, разделенные `;`.
    2. `--penalize-nl`: Наказывать токены новой строки (по умолчанию: false).
    3. `--mirostat-lr`: Коэффициент обучения Mirostat, параметр eta (по умолчанию: 0.1).
    4. `--mirostat-ent`: Целевая энтропия Mirostat, параметр tau (по умолчанию: 5.0).
    5. `--mirostat`: Использовать выборку Mirostat. (по умолчанию: 0, 0 = отключено, 1 = Mirostat, 2 = Mirostat 2.0).
    6. `--presence-penalty`: Штраф за присутствие повторяющейся последовательности токенов, альфа (по умолчанию: 0.0, 0.0 = отключено).
    7. `--frequency-penalty`: Штраф за частоту повторяющейся последовательности токенов, альфа (по умолчанию: 0.0, 0.0 = отключено).
    8. `--repeat-last-n`: Последние n токенов, которые необходимо учитывать для наказания (по умолчанию: 64, 0 = отключено, -1 = ctx_size).
    9. `--repeat-penalty`: Наказывать повторяющуюся последовательность токенов (по умолчанию: 1.0, 1.0 = отключено).
    10. `--temp`: Температура (по умолчанию: 0.8).
    11. `--typical`: Локальная типичная выборка, параметр p (по умолчанию: 1.0, 1.0 = отключено).
    12. `--tfs`: Выборка без хвостов, параметр z (по умолчанию: 1.0, 1.0 = отключено).
    13. `--min-p`: Выборка min-p (по умолчанию: 0.1, 0.0 = отключено).
    14. `--top-p`: Выборка top-p (по умолчанию: 0.9, 1.0 = отключено).
    15. `--top-k`: Выборка top-k (по умолчанию: 40, 0 = отключено).
    16. `--cfg-negative-prompt`: Отрицательный подсказка для использования для направления (по умолчанию: '').
    17. `-l`: Модифицирует вероятность появления токена в завершении.
    18. `-n`: Количество токенов для предсказания (по умолчанию: -1, -1 = бесконечность, -2 = пока не заполнится контекст).
    19. `--keep`: Количество токенов для сохранения из начальной подсказки (по умолчанию: 0, -1 = все).

    затем по каждому делай запрос отдельно, добавляя что это утилита по inference llm и что может значить соответствующая опция, пример:
    spoiler
    в приведенном help файле были ключи приложения для запуску большой языковой модели ии на своих мощностях llama.cpp, что может значить ключ --temp
    ответ:
    В контексте параметров большой языковой модели ИИ --temp означает температуру (temperature) для алгоритма сэмплирования при генерации текста.

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

    Например:

    - Низкая температура (например, 0.2) заставит модель генерировать текст, который более "осмысленный" и склонный к использованию самых вероятных следующих токенов согласно модели.

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

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

    --mirostat

    `--mirostat` - это ключ командной строки, который управляет использованием алгоритма выборки Mirostat при генерации текста с помощью большой языковой модели в llama.cpp.

    Mirostat (Minimial Regret Optimal Sampling for Text) - это алгоритм выборки для условного генерирования текста, который пытается находить оптимальные завершения с минимальным сожалением (regret) по отношению к заданной функции штрафа.

    Значения этого ключа:

    - 0 (по умолчанию) - отключает использование Mirostat, и вместо этого используются другие указанные алгоритмы выборки, такие как top-k, top-p, повторные штрафы и т.д.
    - 1 - включает использование оригинального алгоритма Mirostat.
    - 2 - включает использование улучшенной версии Mirostat 2.0.

    Когда Mirostat включен, он в основном игнорирует другие параметры выборки, такие как top-k, top-p, tail-free sampling и типичная выборка. Вместо этого он динамически адаптирует распределение выборки на основе целевой функции, используя обучение политики.

    Два важных гиперпараметра для Mirostat:

    1) `--mirostat-lr` (learning rate) - скорость обучения для алгоритма.
    2) `--mirostat-ent` (target entropy) - целевая энтропия выходного распределения.

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


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

    ВАЖНО: важнейший навык, который может понадобиться в ближайшие годы наверное любому человеку, хоть как то работающему с информацией, и тем более программистам, это умение работать и понимание недостатков современного ИИ, хотя бы на базе chatgpt или других компаний.
    Это похоже становится даже важнее чем гуглить (но не вместо, потому что современный ИИ все еще тупит и может напридумывать чуши), поэтому учиться учиться и еще раз учиться.
    Ответ написан
    Комментировать
  • Возможно ли выгрузить часть слоёв в VRAM видеокарты AMD, если основная - NVIDIA?

    @rPman
    Да, но поддержку пилить придется самому.

    Например llama.cpp есть поддержка нескольких видеокарт, на сколько я знаю есть возможность с разными вендорами через opencl.

    Там есть библиотека ggml, чтобы свои сети пилить и даже конвертировать их их pytorch
    Ответ написан
    Комментировать
  • Как скачать целую ветку форума 4pda и скормить нейросети?

    @rPman
    4pda основан на ip.board, все загружается без танцев с бубном, только осторожно, без авторизации получаются другие страницы чуть в ином формате. Вот пример кода на основе simple_html_dom:
    <?php
    include('simple_html_dom.php');
    
    // ссылка на первую страницу темы
    define('START_URL','https://4pda.to/forum/index.php?showtopic=1084129');
    // количество страниц &st= из ссылки » в навигаторе по страницам
    define('PAGES_CNT',580);
    
    @mkdir('data');
    
    for($i=0;$i<=PAGES_CNT;$i+=20)
    {
    	// формируем url
    	$url=START_URL.($i==0?'':'&st='.$i);
    	// имя кеш файла чтобы не загружать повторно
    	$cache_fn='data/'.md5(START_URL).'.'.$i.'.html';
    	if(!file_exists($cache_fn))
    	{
    		// Загружаем страницу
    		$data=file_get_contents($url);
    		// сохраняем страницу в кеше
    		file_put_contents($cache_fn,$data);
    		// пауза между запросами к серверу для защиты его от ddos
    		sleep(1);
    	} else
    	{
    		// читаем из кеша
    		$data=file_get_contents($cache_fn);
    	}
    
    	$html=str_get_html($data);
    	$num=0;
    	foreach($html->find('div[class]:not([class=""]') as $post)
    	{ // перебираем посты в теме
    		// пропускаем первый пост темы, он дублируется на каждой странице
    		if($num++==0) continue;
    		// выводим пост на экран
    		$post_html=$post->find('div.post_body',0)->text();
    		echo $post_html.PHP_EOL;
    	}
    	// вставляем разделитель между постами
    	echo '<hr/>'.PHP_EOL;
    	$html->clear();
    }
    ?>

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

    Страницы можешь вручную указать for($i=0;$i<=PAGES_CNT;$i+=20) вместо 0 - начальный (с шагом 20) и PAGES_CNT конечный пост.

    Вместо текстового представления $post_html=$post->find('div.post_body',0)->text(); можешь сложнее структуру сообщения анализировать, выявляя цитирования и к примеру исключая их из текста (они занимают большую часть всего, дублируя многократно информацию).

    Конкретно этот пример не влезет в контекстное окно бесплатного claude - это 70к токенов. Поэтому дели на куски.
    Ответ написан
    8 комментариев
  • Какую выбрать LLM для быстрого локального запуска?

    @rPman
    llama3-70b и Codestral 22B единственные открытые сетки, которые давали мне адекватный вариант на не простые задачи (я почти не трогал qwen и command r+ а они тоже хороши).

    Чтобы оценить требования памяти в зависимости от размера модели и ее квантизации, полистай сообщения этого бота, например вот для llama70b

    p.s. llama.cpp позволит разместить часть весов в GPU а часть в RAM, это имеет смысл если оперативной памяти чуть чуть не хватает, а квантизация уже на грани понижения качества, я так codestral 22b с квантизацией 5bit на 16gb запускал, указав 48 из 57 слоев на gpu с такими скоростями:
    llama_print_timings:        load time =    1997,65 ms
    llama_print_timings:      sample time =     790,28 ms /   256 runs   (    3,09 ms per token,   323,94 tokens per second)
    llama_print_timings: prompt eval time =   21593,29 ms /  7650 tokens (    2,82 ms per token,   354,28 tokens per second)
    llama_print_timings:        eval time =   33864,88 ms /   255 runs   (  132,80 ms per token,     7,53 tokens per second)
    llama_print_timings:       total time =   55938,24 ms /  7905 tokens
    Ответ написан
    Комментировать
  • Какие есть нейронные сети которые можно обучить на исходном коде?

    @rPman
    Ни одна gpt не сможет полноценно решать такую задачу
    скормить исходники движка Unreal Engine

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

    Стоимость этого будет сравнима со стоимостью полного обучения - миллионы баксов, без преувеличения!

    После этого потребуется еще доводка с помощью алгоритмов RLHF (нужны серии специально подобранных вопросов, так же это очень связано с тем какая была обучающая выборка, иначе модель будет низкого уровня и способна только для задач completion и очень слабо для chat, а тебе нужны instruction

    GPT умеет легко обучаться только на данных, которые влезают в контекстное окно. У лучшей открытой сетки llama3-70b это 8к токенов (обычно это +-1 файл исходников) да и у других от силы 16к и 32к но они слабые и способности запоминать данные во всем окне очень слабые.
    Если что, советую mixtral 8x22b, требует 85гб для 4бит квантизации (в этом случае незначительно теряется качество) или лучше 96гб для 5битной. 64к размер контекста, работает несколько токенов в секунду на процессоре, т.е. будешь ждать но не критично долго

    Но это не значит что совсем нельзя. Привожу пример сессии моей беседы с бесплатным anthropic claude (у них большое окно контекста, влезает несколько исходных файлов), скармливал исходники приложения на c# для поиска дубликатов видео.

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

    Дополнительно в процессе беседы дублирую информацию из основных вопросов, либо задаю наводящие вопросы, если ответ получил не полный

    Сеть поняла написанный код, как он работает и смогла ответить на нетривиальные вопросы.

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

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

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

    p.s. 'точно и без ошибок' не будет!
    Ответ написан
    Комментировать
  • Многослойный перцептрон - как выполнить действия?

    @rPman
    input1..3 размерность N и output1..3 размерность M это вектора I и O соответственно, каждый со своей размерностью (в твоем примере одинаковая)
    размер скрытого слоя - K
    веса между input и скрытым слоем w1x это матрица A, размерность NxK
    веса между скрытым слоем и output w2x это матрица B, размерность KxM

    Формула
    sigmoid(I*A) получаем вектор H размерностью K
    следующий слой
    sigmoid(H*B) получаем вектор O размерностью M

    т.е. O = sigmoid(sigmoid(I*A)*B)

    входной и выходной вектора еще нормализуют
    Ответ написан
  • Как поместить большую модель на нескольких видеокартах?

    @rPman
    Требования оперативной памяти к GPT моделям примерно 2x байт от количества параметров (на самом деле сложнее и больше но но начинают говорить именно с этой оценки). Полистай сообщения этого бота на huggingface, вот пример для llama2-70b
    float32	256.29 GB
    float16	128.15 GB
    int8	64.07 GB квантизация
    int4	32.04 GB квантизация


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

    Если тебе нужно использовать модель на python с помощью tensorflow, бери код с офф страницы модели и используй bitsandbytes. Не подскажу по тому, как раскидать модель по нескольким видеокартам тут, проектов тьма, есть даже те что работают по сети (т.е. не в пределах одной машины) типа petals.

    И у тебя есть альтернатива, используй проект llama.cpp, позволяет запускать модель на процессоре (значительно эффективнее чем реализация на tensorflow) и есть поддержка gpu, одновременно нескольких и разных, причем любой, не только nvidia, плюс если vram не хватает, можно оставить часть весов в памяти и досчитывать на процессоре, что все равно эффективнее.

    p.s. llama3-70b с помощью llama.cpp я запускал на процессоре с памятью 64Gb, с квантизацией 5bit, примерно 1.4токена в секунду, что все еще быстрее для англоязычных текстов чем пишет большинство людей.
    Ответ написан
  • Как запустить обучение с deepspeed у себя на пк?

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

    @rPman
    Ни одна нейросеть на базе gpt не умеет напрямую работать со страницами в интернете.

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

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

    И главная проблема - ограничения на размер контекста. Большие объемы текста тупо не помещаются 4к..8к токенов это тот объем, в пределах которого сети работают хорошо, но чем больше размер контекста (даже если заявлены 16к или 32к) начинаются борьба компромисов, качества и стоимости. Может так получиться что вместо работы со всей информацией сразу, ее делят на части (еще одна проблема по анализу исходной страницы), а затем, набирая вопросы из текущего контекста (та еще задачка) задают их последовательно для каждой, собирая ответы в итоговый контекст и ее уже используют для дальнейшей беседы. Плюс есть еще алгоритмы саморизации. Плюс еще неплохо сюда multishot пристроить, с примерами.

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

    В общем реализуете что то стоящее первыми, может даже озолотитесь, продавая готовое решение бизнесу.
    Ответ написан
    Комментировать
  • Существует ли аналог GPTs?

    @rPman
    Мне кажется рановато искать ГОТОВЫЕ решения В ОТКРЫТОМ доступе на эту тему. Народ только только пилит все это.

    И да, открытые и доступные llm-ки могут быть не достаточно сильными, чтобы успешно отрабатывать данную задачу. Зачем вам поисковая система, которая будет косячить в 10% случаев? 20%? 30%? причем в обе стороны, т.е. не только выдавать не нужное, но и пропускать нужное

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

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