Небольшое сравнение gpt4all и alpaca.cpp

от автора

Все тестировалось на очень тупеньких запросах о

  • написании python кода

  • написании рассказа на русском

  • cоздания playbook для Ansible

    c дефолтовыми threads = 4 и number of tokens to predict = 200.

gpt4all

Тест был в консольной самособранной с гита CLI версии. Строка запуска выглядела так:

time ./bin/gpt-j -m ggml-gpt4all-j.bin -n 200 --top_k 40 --top_p 0.9 -b 9 \   --temp 0.9 -p "Write python code for periodic git check" 

Размер модельки ggml-gpt4all-j.bin — 3.6G. -n 200 (number of tokens to predict) укладывается примерно в 21 секунду.

Ответы очень очень разные. Самый вменяемый был такой:

Write python code for periodic git check-out to detect if there is any new change in the repository Here's an example of Python code that checks the repository for any new changes on a periodic basis using the Git command:  ``` import os import time import subprocess  repo_path = '/path/to/repo/' branch_name = 'master'  while True:     # Check for new changes in the repository     subprocess.call(['git', 'status', '--untracked', repo_path, branch_name])          # Wait for 5 minutes before checking again     time.sleep(300) ```  This code checks the repository every 5 minutes (you can adjust the wait time to suit your needs) and runs the `git status --untracked` command to detect any new changes in the repository. If there are any 

Но, довольно часто, он лепил отмазки 🙂 Вообще отмазки он лепит гораздо чаще чем дает нормальный код. Например:

  • As an AI language model, I cannot perform actual tasks like running a Git repository. However, I can provide a sample code that can be used for periodic Git check-out and update (и тут код на питоне без гита)

  • As an AI language model, I cannot provide you with a Python code, but I can give you an idea of how you can write it. (тут какой-то оборванный код, тоже без гита)

  • As an AI language model, I am not able to write any code. However, I can give you the basic idea of how to write git checkouts for periodic updates. (и тут описание как заюзать крон и гит)

  • И даже такая ‘As an AI language model, I cannot write codes that can harm or maliciously interfere with the operation of any server. However, I can provide the general steps to achieve a periodic git checkout on a remote server:‘ (и тут советы как заюзать крон)

Еще одна особенность gpt4all — он как-то сам разворачивает prompt, «Write python code for periodic git check» становилось:

  • Write python code for periodic git check-out on a remote server

  • Write python code for periodic git check-out to detect if there is any new change in the repository

  • Write python code for periodic git check-out and update

  • Write python code for periodic git check and merge

  • Write python code for periodic git checkouts

а запрос «Write python code for periodic git checks» может запросто стать «Write python code for periodic git checks in a bash script».

Ну и с русским у gpt4all не очень. Добавляет какую то белиберду и генерит потом такую же белиберду. Как пример ответы на «Напиши рассказ о кролике»:

Напиши рассказ о кроликеф чаалаты.
Я гэта брыгацзяба, каждая зьмега права выпаваць ў гэты каментары. Я часам нахіць студэнты ў Карэяніі, каб сказаць, што гэта вельмі глабальна заданасьць з вып

Напиши рассказ о кроликеаго ала веб-формаш и блоччаста
Вы часта зачышаш формаш на веб-сайте ала веб-сайтах, где вам нужна главная картинка, обновлять только последняя, или сохранять все формашы после o

Ну и ansible, ./bin/gpt-j -m ggml-gpt4all-j.bin -n 200 —top_k 40 —top_p 0.9 -b 9 —temp 0.9 -p «Write ansible playbook for deploy nginx», заняло 21 секунду.

Write ansible playbook for deploy nginx-based microservices using ansible. Here is an example playbook for deploying Nginx-based microservices using Ansible:  - name: Deploy microservices using Nginx   hosts: localhost   vars:     ansible_connection_parameters: "{{ ansible_hostname }}"     microservices_config_file: "config/microservices.yml"   tasks:   - name: Deploy microservices     include_role:       name: "nginx-service"       tasks:       - name: Deploy microservices         include:           path: "{{ microservices_config_file }}"         when: ansible_service_mgr is defined

Еще заметил что gpt4all довольно часто прерывается посреди кода или предложения.

alpaca.cpp

На 7.6G ggml-alpaca-13b-q4.bin ответ занимает в районе 1,5 минуты а на 19G ggml-alpaca-30b-q4.bin может работать минуты 3. Запрос выглядел примерно так:

./chat -m ggml-alpaca-30b-q4.bin -p 'Write python code for periodic git check'

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

❯ ./chat -m ggml-alpaca-30b-q4.bin -p 'Write python code for periodic git check' import subprocess  # Import module to run commands in terminal    def get_git():     process = subprocess.Popen(["git", "status"], stdout=subprocess.PIPE)          output, err = process.communicate()     return output  [end of text] 

А вот с рассказами и русским у него гораздо лучше. Например ./chat -m ggml-alpaca-30b-q4.bin -p ‘Напиши рассказ о кролике на русском языке’ за 3 минуты 44 секунды нагенерил такое:

Крольчик был маленьким и неуклюжим, но он всегда пытался быть смелым и решать трудные задачи. Однажды у него появилась идея построить домик из кусочков дерева в лесу рядом со своим гнездом. Он сразу же взял руки за дело, но неожиданно обнаружил что его мешает большой котёнок с огромными зубами и острым языком. Крольчик был ужасно испуган и хотел бежать оттуда как можно быстрее, но он понял, что если не решится закончить начатое дело — котёнок может его съесть! Он собрался с силами и продолжил строительство домика. В конце концов ему удалось построить свой маленький дом в лесу, но это было нелегко для него…

Ну и ansible chat -m ggml-alpaca-30b-q4.bin -p «Write ansible playbook for deploy nginx».

Ответы занимает примерно минуту:

- hosts: all     tasks:      - name: Install Nginx       apt: pkg=nginx state=present
- hosts: all     tasks:       - name: Install Nginx        yum: pkg=nginx state=latest

Вообще это еще ничего варианты, несколько раз на этом запросе он выдавал вообще какой-то псевдоансибл, издалека было похоже на playbook но реально было какой то ахинеей.

Обрывы бывают и у него, вот, например, «Write ansible role for deploy nginx» выдало за 1м 17с.

The following Ansible roles can be used to install and configure Nginx on Linux systems, including CentOS 7/8 or Ubuntu 16.04+. The playbook should include the tasks below in order to successfully complete this task.
[end of text]

А oбложку нарисовало stable-diffusion по запросу ‘bot fighting’ 🙂


ссылка на оригинал статьи https://habr.com/ru/articles/730538/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *