/ Модель

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

Контекст
8 192 токена
Параметры
7,5 млрд
Размер весов
32,1 ГБ
Архитектура
llama · dense
Библиотека
transformers
Опубликована
11 июн 2024

Solidity-Llama3-8b

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

Дообученная модель Llama 3 на 7,5 млрд параметров для автодополнения и заполнения пропусков в Solidity-коде.

30скачиваний за 30 дней2лайкавеса обновлены20 июн 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Solidity Llama 3 — языковая модель семейства Llama 3, разработанная для автодополнения и заполнения пропусков в коде на Solidity. Она основана на Llama 3 8B и дополнительно обучена на наборе DISL с реальными смарт-контрактами, развёрнутыми в основной сети Ethereum. Модель содержит 7,5 млрд параметров, использует плотную архитектуру LlamaForCausalLM и работает через Transformers; для весов указан формат safetensors.

Модель рассчитана на интеграцию в редакторы кода и использует формат Fill-in-the-Middle: контекст до курсора и после него задаёт место, которое нужно заполнить. Максимальный родной контекст — 8192 токена. Метаданные и карточка указывают английский язык. Модель может быть полезна для генерации и продолжения Solidity-кода, но её качество за пределами автодополнения и заполнения кода на Solidity может быть низким; результат требует проверки. Лицензия в карточке не определена, поэтому условия использования следует уточнить у автора.

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

  • автодополнение Solidity-кода в редакторе
  • заполнение пропуска между префиксом и суффиксом кода
  • генерация продолжения смарт-контракта Ethereum
  • предложение фрагментов Solidity по окружающему коду

Ограничения

Модель может работать хуже за пределами автодополнения и заполнения Solidity-кода; сгенерированный код следует проверять. Лицензия в карточке обозначена как требующая уточнения.

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

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

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

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

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

Открыть на Hugging Face

Solidity Llama 3

Model Details

Model Description

Solidity Llama 3 is a Large Language Model specifically designed for Solidity code completion and infilling. It's based on the LLAMA-3 8b model and has been further trained on the DISL dataset, which contains a large and diverse collection of real-world Solidity smart contracts that have been deployed to Ethereum mainnet. The model is intended to be used for tasks such as code completion within code editors, and users should be aware of its limitations based on its training data and the inherent limitations of the technology.

  • Model type: Code Completion
  • License: [More Information Needed]
  • Finetuned from model: LLAMA-3 8b

Uses

Direct Use

Solidity Llama 3 can be used for code completion and infilling tasks within Solidity code editors. It was trained for this task using the fill-in-the-middle (FIM) objective, where you provide a prefix and a suffix as context for the completion. The following tokens are used to separate the different parts of the input:

  • <|reserved_special_token_11|> precedes the context before the completion we want to run.
  • <|reserved_special_token_10|> precedes the suffix. You must put this token exactly where the cursor would be positioned in an editor, as this is the location that will be completed by the model.
  • <|reserved_special_token_12|> is the prompt that invites the model to run the generation.
from transformers import AutoTokenizer, AutoModelForCausalLM

FIM_SUFFIX = "<|reserved_special_token_10|>"
FIM_PREFIX = "<|reserved_special_token_11|>"
FIM_MIDDLE = "<|reserved_special_token_12|>"
tokenizer = AutoTokenizer.from_pretrained("andrijdavid/Solidity-Llama3-8b")
model = AutoModelForCausalLM.from_pretrained("andrijdavid/Solidity-Llama3-8b")

prompt = f'''{FIM_PREFIX}contract SendEther {{
    function sendViaTransfer(address payable _to) public payable {{
        // This function is no longer recommended for sending Ether.
        _to.transfer(msg.value);
    }}

    function sendViaSend(address payable _to) public payable {{
        // Send returns a boolean value indicating success or failure.
        // This function is not recommended for sending Ether.
        {FIM_SUFFIX}
    }}

    function sendViaCall(address payable _to) public payable {{
        // Call returns a boolean value indicating success or failure.
        // This is the current recommended method to use.
        (bool sent, bytes memory data) = _to.call{{value: msg.value}}("");
        require(sent, "Failed to send Ether");
    }}{FIM_MIDDLE}
'''
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
prompt_len = inputs["input_ids"].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=1024)
print(tokenizer.decode(outputs[0][prompt_len:]))

You can provide a list of terminators to the generate function, like this:


terminators = tokenizer.convert_tokens_to_ids([FIM_PREFIX, FIM_MIDDLE, FIM_SUFFIX])
terminators += [tokenizer.eos_token_id]

outputs = model.generate(
  **inputs,
  max_new_tokens=1024,
  eos_token_id=terminators,
)
print(tokenizer.decode(outputs[0][prompt_len:]))

Out-of-Scope Use

The model may not perform well for tasks outside of Solidity code completion and infilling, and users should be aware of its limitations in these areas.

Bias, Risks, and Limitations

The model's performance may be affected by biases in the training data, and users should be aware of these limitations. More information is needed for further recommendations.

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей