/ Модель

Характеристики

Контекст
16 384 токена
Параметры
6,6 млрд
Размер весов
13,5 ГБ
Лицензия
Llama 2
Архитектура
llama · dense
Опубликована
7 сен 2023

CodeLlama-7b-Instruct-Solidity

Генерация текстаТекст → текст3 профессии

Дообученная Code Llama генерирует смарт-контракты на Solidity по текстовым инструкциям.

115скачиваний за 30 дней18лайковвеса обновлены1 мая 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

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

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

AlfredPros/CodeLlama-7b-Instruct-Solidity — дообученная модель Code Llama Instruct с плотной архитектурой LlamaForCausalLM и примерно 6,6 млрд параметров. Она предназначена для генерации смарт-контрактов на Solidity по инструкциям и примерам. Для дообучения применялась QLoRA в 4-битном формате NF4 с библиотекой PEFT, на наборе из 6 003 пар инструкций и исходного кода смарт-контрактов, созданных GPT. Модель принимает текстовые запросы, генерирует текст кода и рассчитана прежде всего на английский язык; нативный контекст — 16 384 токена.

Модель подходит для создания черновиков контрактов и ответов на запросы по коду Solidity. Дообучение длилось одну эпоху на синтетических данных, поэтому качество и надёжность результата для конкретных сценариев требуют проверки. Указана лицензия Llama 2.

Сценарии применения

  • генерация черновика смарт-контракта на Solidity по описанию
  • создание функций и фрагментов кода Solidity
  • ответы на инструкции по разработке смарт-контрактов

Ограничения

Дообучение выполнено за одну эпоху на синтетическом наборе из 6 003 пар, поэтому сгенерированный код необходимо проверять и тестировать. README не приводит оценок качества модели.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Code LLaMA 7B Instruct Solidity

A finetuned 7 billion parameters Code LLaMA - Instruct model to generate Solidity smart contract using 4-bit QLoRA finetuning provided by PEFT library.

Training Dataset

Dataset used to finetune the model is AlfredPros' Smart Contracts Instructions (https://huggingface.co/datasets/AlfredPros/smart-contracts-instructions). A dataset containing 6,003 GPT-generated human instruction and Solidity source code data pairs. This dataset has been processed for training LLMs.

Training Parameters

Bitsandbytes quantization configurations

  • Load in 4-bit: true
  • 4-bit quantization type: NF4
  • 4-bit compute dtype: float16
  • 4-bit use double quantization: true

Supervised finetuning trainer parameters

  • Number of train epochs: 1
  • FP16: true
  • FP16 option level: O1
  • BF16: false
  • Per device train batch size: 1
  • Gradient accumulation steps: 1
  • Gradient checkpointing: true
  • Max gradient normal: 0.3
  • Learning rate: 2e-4
  • Weight decay: 0.001
  • Optimizer: paged AdamW 32-bit
  • Learning rate scheduler type: cosine
  • Warmup ratio: 0.03

Training Details

  • GPU used: 1x NVIDIA GeForce GTX 1080Ti
  • Training time: 21 hours, 4 minutes, and 57 seconds

Training Loss

Step	Training Loss
 100	0.330900
 200	0.293000
 300	0.276500
 400	0.290900
 500	0.306100
 600	0.302600
 700	0.337200
 800	0.295000
 900	0.297800
1000	0.299500
1100	0.268900
1200	0.257800
1300	0.264100
1400	0.294400
1500	0.293900
1600	0.287600
1700	0.281200
1800	0.273400
1900	0.266600
2000	0.227500
2100	0.261600
2200	0.275700
2300	0.290100
2400	0.290900
2500	0.316200
2600	0.296500
2700	0.291400
2800	0.253300
2900	0.321500
3000	0.269500
3100	0.295600
3200	0.265800
3300	0.262800
3400	0.274900
3500	0.259800
3600	0.226300
3700	0.325700
3800	0.249000
3900	0.237200
4000	0.251400
4100	0.247000
4200	0.278700
4300	0.264000
4400	0.245000
4500	0.235900
4600	0.240400
4700	0.235200
4800	0.220300
4900	0.202700
5000	0.240500
5100	0.258500
5200	0.236300
5300	0.267500
5400	0.236700
5500	0.265900
5600	0.244900
5700	0.297900
5800	0.281200
5900	0.313800
6000	0.249800
6003	0.271939

Example Usage

from transformers import BitsAndBytesConfig, AutoTokenizer, AutoModelForCausalLM
import torch
import accelerate

use_4bit = True
bnb_4bit_compute_dtype = "float16"
bnb_4bit_quant_type = "nf4"
use_double_nested_quant = True
compute_dtype = getattr(torch, bnb_4bit_compute_dtype)

# BitsAndBytesConfig 4-bit config
bnb_config = BitsAndBytesConfig(
    load_in_4bit=use_4bit,
    bnb_4bit_use_double_quant=use_double_nested_quant,
    bnb_4bit_quant_type=bnb_4bit_quant_type,
    bnb_4bit_compute_dtype=compute_dtype,
    load_in_8bit_fp32_cpu_offload=True
)

# Load model in 4-bit
tokenizer = AutoTokenizer.from_pretrained("AlfredPros/CodeLlama-7b-Instruct-Solidity")
model = AutoModelForCausalLM.from_pretrained("AlfredPros/CodeLlama-7b-Instruct-Solidity", quantization_config=bnb_config, device_map="balanced_low_0")

# Make input
input='Make a smart contract to create a whitelist of approved wallets. The purpose of this contract is to allow the DAO (Decentralized Autonomous Organization) to approve or revoke certain wallets, and also set a checker address for additional validation if needed. The current owner address can be changed by the current owner.'

# Make prompt template
prompt = f"""### Instruction:
Use the Task below and the Input given to write the Response, which is a programming code that can solve the following Task:

### Task:
{input}

### Solution:
"""

# Tokenize the input
input_ids = tokenizer(prompt, return_tensors="pt", truncation=True).input_ids.cuda()
# Run the model to infere an output
outputs = model.generate(input_ids=input_ids, max_new_tokens=1024, do_sample=True, top_p=0.9, temperature=0.001, pad_token_id=1)

# Detokenize and display the generated output
print(tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0][len(prompt):])

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
LlamaForCausalLM
Ревизия весов
7733923

0 моделей