codellama README

The project's README from github.com/meta-llama/codellama. As one markdown file: README.md.

Introducing Code Llama

Code Llama is a family of large language models for code based on Llama 2 providing state-of-the-art performance among open models, infilling capabilities, support for large input contexts, and zero-shot instruction following ability for programming tasks. We provide multiple flavors to cover a wide range of applications: foundation models (Code Llama), Python specializations (Code Llama - Python), and instruction-following models (Code Llama - Instruct) with 7B, 13B and 34B parameters each. All models are trained on sequences of 16k tokens and show improvements on inputs with up to 100k tokens. 7B and 13B Code Llama and Code Llama - Instruct variants support infilling based on surrounding content. Code Llama was developed by fine-tuning Llama 2 using a higher sampling of code. As with Llama 2, we applied considerable safety mitigations to the fine-tuned versions of the model. For detailed information on model training, architecture and parameters, evaluations, responsible AI and safety refer to our research paper. Output generated by code generation features of the Llama Materials, including Code Llama, may be subject to third party licenses, including, without limitation, open source licenses.

We are unlocking the power of large language models and our latest version of Code Llama is now accessible to individuals, creators, researchers and businesses of all sizes so that they can experiment, innovate and scale their ideas responsibly. This release includes model weights and starting code for pretrained and fine-tuned Llama language models — ranging from 7B to 34B parameters.

This repository is intended as a minimal example to load Code Llama models and run inference.

Download

In order to download the model weights and tokenizers, please visit the Meta website and accept our License.

Once your request is approved, you will receive a signed URL over email. Then run the download.sh script, passing the URL provided when prompted to start the download. Make sure that you copy the URL text itself, do not use the 'Copy link address' option when you right click the URL. If the copied URL text starts with: https://download.llamameta.net, you copied it correctly. If the copied URL text starts with: https://l.facebook.com, you copied it the wrong way.

Pre-requisites: make sure you have wget and md5sum installed. Then to run the script: bash download.sh.

Keep in mind that the links expire after 24 hours and a certain amount of downloads. If you start seeing errors such as 403: Forbidden, you can always re-request a link.

Model sizes

Model Size
7B ~12.55GB
13B 24GB
34B 63GB
70B 131GB

Setup

In a conda environment with PyTorch / CUDA available, clone the repo and run in the top-level directory:

pip install -e .

Inference

Different models require different model-parallel (MP) values:

Model MP
7B 1
13B 2
34B 4
70B 8

All models, except the 70B python and instruct versions, support sequence lengths up to 100,000 tokens, but we pre-allocate the cache according to max_seq_len and max_batch_size values. So set those according to your hardware and use-case.

Pretrained Code Models

The Code Llama and Code Llama - Python models are not fine-tuned to follow instructions. They should be prompted so that the expected answer is the natural continuation of the prompt.

See example_completion.py for some examples. To illustrate, see command below to run it with the CodeLlama-7b model (nproc_per_node needs to be set to the MP value):

torchrun --nproc_per_node 1 example_completion.py \
    --ckpt_dir CodeLlama-7b/ \
    --tokenizer_path CodeLlama-7b/tokenizer.model \
    --max_seq_len 128 --max_batch_size 4

Pretrained code models are: the Code Llama models CodeLlama-7b, CodeLlama-13b, CodeLlama-34b, CodeLlama-70b and the Code Llama - Python models CodeLlama-7b-Python, CodeLlama-13b-Python, CodeLlama-34b-Python, CodeLlama-70b-Python.

Code Infilling

Code Llama and Code Llama - Instruct 7B and 13B models are capable of filling in code given the surrounding context.

See example_infilling.py for some examples. The CodeLlama-7b model can be run for infilling with the command below (nproc_per_node needs to be set to the MP value):

torchrun --nproc_per_node 1 example_infilling.py \
    --ckpt_dir CodeLlama-7b/ \
    --tokenizer_path CodeLlama-7b/tokenizer.model \
    --max_seq_len 192 --max_batch_size 4

Pretrained infilling models are: the Code Llama models CodeLlama-7b and CodeLlama-13b and the Code Llama - Instruct models CodeLlama-7b-Instruct, CodeLlama-13b-Instruct.

Fine-tuned Instruction Models

Code Llama - Instruct models are fine-tuned to follow instructions. To get the expected features and performance for the 7B, 13B and 34B variants, a specific formatting defined in chat_completion() needs to be followed, including the INST and <<SYS>> tags, BOS and EOS tokens, and the whitespaces and linebreaks in between (we recommend calling strip() on inputs to avoid double-spaces). CodeLlama-70b-Instruct requires a separate turn-based prompt format defined in dialog_prompt_tokens(). You can use chat_completion() directly to generate answers with all instruct models; it will automatically perform the required formatting.

You can also deploy additional classifiers for filtering out inputs and outputs that are deemed unsafe. See the llama-recipes repo for an example of how to add a safety checker to the inputs and outputs of your inference code.

Examples using CodeLlama-7b-Instruct:

torchrun --nproc_per_node 1 example_instructions.py \
    --ckpt_dir CodeLlama-7b-Instruct/ \
    --tokenizer_path CodeLlama-7b-Instruct/tokenizer.model \
    --max_seq_len 512 --max_batch_size 4

Fine-tuned instruction-following models are: the Code Llama - Instruct models CodeLlama-7b-Instruct, CodeLlama-13b-Instruct, CodeLlama-34b-Instruct, CodeLlama-70b-Instruct.

Code Llama is a new technology that carries potential risks with use. Testing conducted to date has not — and could not — cover all scenarios. In order to help developers address these risks, we have created the Responsible Use Guide. More details can be found in our research papers as well.

Issues

Please report any software “bug”, or other problems with the models through one of the following means:

Model Card

See MODEL_CARD.md for the model card of Code Llama.

License

Our model and weights are licensed for both researchers and commercial entities, upholding the principles of openness. Our mission is to empower individuals, and industry through this opportunity, while fostering an environment of discovery and ethical AI advancements.

See the LICENSE file, as well as our accompanying Acceptable Use Policy

References

  1. Code Llama Research Paper
  2. Code Llama Blog Post

codellama (meta-llama/codellama)

Searching Database…

16.2K ·GitHub
archived
Что это такое?Это официальный код Meta для запуска Code Llama — семейства больших языковых моделей для кода, построенных на Llama 2. Сам репозиторий — это минимальный пример того, как загрузить модели и запустить генерацию.
Веса моделей лежат в этом репозитории или тут только код для их запуска?Только код — веса скачиваются отдельно. Вы принимаете лицензию на сайте Meta, получаете подписанную ссылку по электронной почте и скачиваете чекпоинты с помощью идущего в комплекте скрипта download.sh.
Как это запустить?Запросите доступ на сайте Meta, выполните bash download.sh с подписанной ссылкой, которую вам пришлют на почту, настройте окружение conda с PyTorch и CUDA, затем запустите примеры вроде example_completion.py или example_infilling.py.
Что нужно установить перед началом?Окружение conda с PyTorch, а также wget и md5sum для скрипта скачивания — других зависимостей в репозитории нет.
Есть ли что-то неудобное в получении весов?Да: ссылки на скачивание действуют 24 часа и ограниченное число загрузок, так что если ловите ошибки 403 — запросите ссылку заново. Чекпоинты к тому же огромные — от ~12,55 ГБ (7B) до 63 ГБ (34B) и 131 ГБ (70B).
Для кого Meta это делает доступным?Для частных лиц, создателей контента, исследователей и компаний любого размера — Meta позиционирует Code Llama для всех, кто хочет экспериментировать с LLM для кода: от хобби-проектов до коммерческого использования.
Могу ли я использовать Code Llama в коммерческих проектах?Да — модель и веса лицензированы и исследователям, и коммерческим компаниям. Это специальная лицензия Meta (на GitHub она значится как нестандартная) с положением о допустимом использовании, а не классическая open-source лицензия.
На каком железе это вообще работает?Нужна видеокарта NVIDIA: для инференса требуется PyTorch с CUDA. Более крупным моделям нужно несколько GPU — код использует параллелизм моделей: MP 1 для 7B, 2 для 13B, 4 для 34B и 8 для 70B.
Какие варианты моделей можно выбрать?Три варианта: базовая Code Llama, заточенная под Python Code Llama - Python и следующая инструкциям Code Llama - Instruct, каждый в размерах 7B, 13B, 34B и 70B. Базовые и Instruct версии 7B и 13B дополнительно умеют достраивать код в середине файла.
Она умеет дополнять код в середине файла, а не только продолжать с конца?Да — infilling поддерживают варианты 7B и 13B у Code Llama и Code Llama - Instruct: они достраивают код с учётом окружающего контекста, примеры есть в example_infilling.py.
Какой длины может быть входной контекст?Модели обучены на последовательностях в 16k токенов и работают лучше с входами до 100k токенов, кроме версий 70B Python и Instruct. KV-кэш выделяется заранее, поэтому подберите max_seq_len и max_batch_size под ваше железо.
Как составлять запросы к обычным предобученным моделям?Они не обучены следовать инструкциям — формулируйте запрос так, чтобы ожидаемый ответ был естественным продолжением вашего текста, как в примере example_completion.py. Для следования инструкциям используйте варианты Instruct через chat_completion(), где нужное форматирование делается автоматически.
Репозиторий ещё поддерживается?Нет — meta-llama/codellama заархивирован на GitHub и заморожен в текущем виде. Код по-прежнему служит ориентиром для скачивания и запуска оригинальных весов Code Llama, но обновлений здесь ждать не стоит.
Creator
meta-llama
Size
<0.1 MB
Stars
16.2K
Updated
CommitMay 21
Age
3y
Commits · 90 Days