Возможно, я не совсем корректно сформулировал, что именно хочу от трактовки. Меня интересовало, почему в описываемых случаях веса не корректируются самостоятельно из проблемной зоны в нужную, а зависают в проблемной зоне, если принудительно не заменить знаки весов на противоположные. Рассуждения и тесты привели к тому, что при коррекции необходимо учитывать соответствующие параметры объектов. Написал об этом отдельно здесь.
"ruGPT-3-XL - модель генерации текста. Она не училась отвечать на вопросы и исполнять инструкции."
Примеры для исследования такие: 1. придумай 10 названий для историй 2. придумай начальные фразы для 10 историй 3. придумай историю о том, как две маленькие девочки пошли в лес 4. Автомобили нужны для того, чтобы
если ruGPT-3-XL как "модель генерации текста" - не для таких заданий, то для чего тогда?
если просто копировать код, то при дообучении (Fine-tuning) появлялась ошибка на этапе training_args после сверки с исходной документацией (https://github.com/ai-forever/ru-gpts) была применена версия transformers==4.24.0 и все заработало (13.06.2023)
выдает ошибку на этапе !pip3 install transformers==2.8.0
ошибка такая:
Building wheels for collected packages: tokenizers, sacremoses error: subprocess-exited-with-error
× Building wheel for tokenizers (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip. Building wheel for tokenizers (pyproject.toml) ... error ERROR: Failed building wheel for tokenizers Building wheel for sacremoses (setup.py) ... done Created wheel for sacremoses: filename=sacremoses-0.0.53-py3-none-any.whl size=895241 sha256=617956bc9914a734482cba0b84ef9e9cd84230fdebdffe0639cae5cc59fe822a Stored in directory: /root/.cache/pip/wheels/00/24/97/a2ea5324f36bc626e1ea0267f33db6aa80d157ee977e9e42fb Successfully built sacremoses Failed to build tokenizers ERROR: Could not build wheels for tokenizers, which is required to install pyproject.toml-based projects
Соответственно, ошибки выдаются и на этапе !sh setup.sh
Данная статья не концентрируется на вопросе – откуда берется вариативность. В общем случае это и так понятно. Из-за рандомности инициации весов, рандомности подбора состава батча и прочее.
Также статья не направлена на решение задачи снижения вариативности, в большинстве случаев процесс будет совпадать со штатной оптимизацией – комбинирование шага обучения, dropout и прочее. В статье речь не об этом.
Цель статьи – обратить внимание на размеры этой вариативности.
«Ну узнал я, что вариативность по метрике аккуратность 1%, как это мне поможет сделать более лучшую модель?»
Практическое применение как раз и заключается в понимании размера вариативности. Если известно, что вариативность достигает 1%, а при коррекции параметров точность улучшилась на 0,3% - это означает, что коррекция параметров практически не повлияла на результат. Он попадает в те же рамки, как если повторно запустить обучение без коррекции параметров. Нельзя сказать, что мы сделали вот так, и модель улучшилась на 0,3%. Нет, ничего не произошло, никакого улучшения. А вот если точность улучшилась на 2%, то в эту сторону уже стоит смотреть внимательно и оптимизировать в этом направлении.
С валидационной выборкой идет работа в процессе обучения, если от этого есть какая-то обратная связь. Например, уменьшаем шаг обучения, если 10 эпох на валидационной выборке нет улучшений. Или сохраняем набор коэффициентов, дающий лучший результат на валидационной выборке за этот процесс обучения.
А уже потом прогоняем через итоговый набор коэффициентов всю тестовую выборку, которую сеть ни разу не видела. И очень может быть, что на валидационной выборке точность близка к 100% или близко к ней, а на тестовой сильно меньше, например, 95%. А во многих классах задач важен не результат на валидационной выборке, который сетьможет шлифануть и до 100%, но перейти в переобученность, а важна обобщающая способность, то есть как сеть будет работать с похожими, но не известными ей данными заданного формата, и это как раз и проверяется на тестовой выборке.
Целью статьи не является достижение высочайшей точности FNN c одним скрытым слоем для распознавания изображений набора MNIST. Понятно, что многослойные и предобученные CNN, а также ансамбли и расширение датсета дают более высокую точность для распознавания изображений. Цель статьи - анализ влияния на точность изменений количества нейронов скрытого слоя и размеров батча. То есть в какой мере на точность влияют изменения количества нейронов скрытого слоя и размеров батча, а в какой видимое изменение точности является просто следствием разброса, вызванного рандомностью инициации весов и рандомностью каждого батча.
Возможно, я не совсем корректно сформулировал, что именно хочу от трактовки.
Меня интересовало, почему в описываемых случаях веса не корректируются самостоятельно из проблемной зоны в нужную, а зависают в проблемной зоне, если принудительно не заменить знаки весов на противоположные.
Рассуждения и тесты привели к тому, что при коррекции необходимо учитывать соответствующие параметры объектов. Написал об этом отдельно здесь.
оказалось, что неправильно заказал сервер и не хватало памяти
перезаказал сервер, чтобы было 8 ГБ
и все заработало (!)
все сделал, как указано в основной части статьи
вроде бы прошло без ошибок
закончил командой
wget https://huggingface.co/Sosaka/Alpaca-native-4bit-ggml/resolve/main/ggml-alpaca-7b-q4.bin
./chat
на панели
main: seed = 1716499122
llama_model_load: loading model from 'ggml-alpaca-7b-q4.bin' - please wait ...
llama_model_load: ggml ctx size = 6065.34 MB
Segmentation fault (core dumped)
root@cv3815137:~/alpaca.cpp#
и чат не начинается
что не так?
"ruGPT-3-XL - модель генерации текста. Она не училась отвечать на вопросы и исполнять инструкции."
Примеры для исследования такие:
1. придумай 10 названий для историй
2. придумай начальные фразы для 10 историй
3. придумай историю о том, как две маленькие девочки пошли в лес
4. Автомобили нужны для того, чтобы
если ruGPT-3-XL как "модель генерации текста" - не для таких заданий,
то для чего тогда?
спасибо за комментарий )
спасибо за комментарий )
Спасибо за статью )
Спасибо за статью )
если просто копировать код,
то при дообучении (Fine-tuning) появлялась ошибка на этапе training_args
после сверки с исходной документацией (https://github.com/ai-forever/ru-gpts)
была применена версия transformers==4.24.0
и все заработало (13.06.2023)
Спасибо за статью )
Спасибо за статью )
Colab по приведенной ссылке
https://colab.research.google.com/github/sberbank-ai/ru-gpts/blob/master/examples/ruGPT3_generation_example.ipynb
выдает ошибку на этапе
!pip3 install transformers==2.8.0
ошибка такая:
Building wheels for collected packages: tokenizers, sacremoses error: subprocess-exited-with-error
× Building wheel for tokenizers (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
Building wheel for tokenizers (pyproject.toml) ... error
ERROR: Failed building wheel for tokenizers
Building wheel for sacremoses (setup.py) ... done
Created wheel for sacremoses: filename=sacremoses-0.0.53-py3-none-any.whl size=895241 sha256=617956bc9914a734482cba0b84ef9e9cd84230fdebdffe0639cae5cc59fe822a
Stored in directory: /root/.cache/pip/wheels/00/24/97/a2ea5324f36bc626e1ea0267f33db6aa80d157ee977e9e42fb
Successfully built sacremoses
Failed to build tokenizers
ERROR: Could not build wheels for tokenizers, which is required to install pyproject.toml-based projects
Соответственно, ошибки выдаются и на этапе !sh setup.sh
"использовались ли LR scheduler, нормалицазии, регуляризации, аугментации и т.п."
Нет, не использовались.
Специально все применялось самое распространенное или по умолчанию для понимания изначальной ситуации
И вот эта функция вызывалась из нескольких вложенных циклов по количеству повторов, размеру батча, количеству нейронов.
Данная статья не концентрируется на вопросе – откуда берется вариативность. В общем случае это и так понятно. Из-за рандомности инициации весов, рандомности подбора состава батча и прочее.
Также статья не направлена на решение задачи снижения вариативности, в большинстве случаев процесс будет совпадать со штатной оптимизацией – комбинирование шага обучения, dropout и прочее. В статье речь не об этом.
Цель статьи – обратить внимание на размеры этой вариативности.
«Ну узнал я, что вариативность по метрике аккуратность 1%, как это мне поможет сделать более лучшую модель?»
Практическое применение как раз и заключается в понимании размера вариативности. Если известно, что вариативность достигает 1%, а при коррекции параметров точность улучшилась на 0,3% - это означает, что коррекция параметров практически не повлияла на результат. Он попадает в те же рамки, как если повторно запустить обучение без коррекции параметров. Нельзя сказать, что мы сделали вот так, и модель улучшилась на 0,3%. Нет, ничего не произошло, никакого улучшения. А вот если точность улучшилась на 2%, то в эту сторону уже стоит смотреть внимательно и оптимизировать в этом направлении.
Спасибо за комментарий )
Спасибо за комментарий )
Спасибо за комментарий )
Спасибо за комментарий )
Спасибо за комментарий )
Понимаю так:
С валидационной выборкой идет работа в процессе обучения, если от этого есть какая-то обратная связь. Например, уменьшаем шаг обучения, если 10 эпох на валидационной выборке нет улучшений. Или сохраняем набор коэффициентов, дающий лучший результат на валидационной выборке за этот процесс обучения.
А уже потом прогоняем через итоговый набор коэффициентов всю тестовую выборку, которую сеть ни разу не видела. И очень может быть, что на валидационной выборке точность близка к 100% или близко к ней, а на тестовой сильно меньше, например, 95%. А во многих классах задач важен не результат на валидационной выборке, который сетьможет шлифануть и до 100%, но перейти в переобученность, а важна обобщающая способность, то есть как сеть будет работать с похожими, но не известными ей данными заданного формата, и это как раз и проверяется на тестовой выборке.
Спасибо за комментарий и ссылки )
Целью статьи не является достижение высочайшей точности FNN c одним скрытым слоем для распознавания изображений набора MNIST.
Понятно, что многослойные и предобученные CNN, а также ансамбли и расширение датсета дают более высокую точность для распознавания изображений.
Цель статьи - анализ влияния на точность изменений количества нейронов скрытого слоя и размеров батча. То есть в какой мере на точность влияют изменения количества нейронов скрытого слоя и размеров батча, а в какой видимое изменение точности является просто следствием разброса, вызванного рандомностью инициации весов и рандомностью каждого батча.