Как стать автором
Обновить

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

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров7.9K

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

  • написании 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' :)

Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии7

Публикации

Истории

Работа

DevOps инженер
42 вакансии

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань