Home Машинное обучение Code Llama 70B теперь доступен в Amazon SageMaker JumpStart | DeepTech

Code Llama 70B теперь доступен в Amazon SageMaker JumpStart | DeepTech

0
Code Llama 70B теперь доступен в Amazon SageMaker JumpStart
 | DeepTech

Сегодня мы рады сообщить, что базовые модели Code Llama, разработанные Meta, доступны клиентам через Amazon SageMaker JumpStart для развертывания одним щелчком мыши и выполнения вывода. Code Llama — это современная модель большого языка (LLM), способная генерировать код и естественный язык кода как из кода, так и из подсказок на естественном языке. Вы можете опробовать эту модель с помощью SageMaker JumpStart, центра машинного обучения (ML), который предоставляет доступ к алгоритмам, моделям и решениям ML, чтобы вы могли быстро приступить к работе с ML. В этом посте мы расскажем, как обнаружить и развернуть модель Code Llama с помощью SageMaker JumpStart.

Код Ламы

Code Llama — модель, выпущенная компанией Мета построен на базе Llama 2. Эта современная модель предназначена для повышения производительности разработчиков при выполнении задач по программированию, помогая им создавать высококачественный, хорошо документированный код. Модели превосходно работают с Python, C++, Java, PHP, C#, TypeScript и Bash и могут сэкономить время разработчиков и сделать рабочие процессы программного обеспечения более эффективными.

Он поставляется в трех вариантах, разработанных для широкого спектра приложений: базовая модель (Code Llama), специализированная модель Python (Code Llama Python) и модель следования инструкциям для понимания инструкций на естественном языке (Code Llama Instruct). Все варианты Code Llama выпускаются в четырех размерах: параметры 7B, 13B, 34B и 70B. Базовые варианты 7B и 13B и инструкции поддерживают заполнение на основе окружающего контента, что делает их идеальными для приложений-помощников по написанию кода. Модели были разработаны с использованием Llama 2 в качестве основы, а затем обучены на 500 миллиардах токенов кодовых данных, а специализированная версия Python обучена на дополнительных 100 миллиардах токенов. Модели Code Llama обеспечивают стабильные генерации с до 100 000 токенов контекста. Все модели обучаются на последовательностях из 16 000 токенов и демонстрируют улучшения на входных данных при использовании до 100 000 токенов.

Модель доступна под той же общественная лицензия как Llama 2.

Модели фундамента в SageMaker

SageMaker JumpStart предоставляет доступ к ряду моделей из популярных центров моделей, включая Hugging Face, PyTorch Hub и TensorFlow Hub, которые вы можете использовать в рабочем процессе разработки машинного обучения в SageMaker. Недавние достижения в области машинного обучения привели к появлению нового класса моделей, известных как модели фундамента, которые обычно обучаются на миллиардах параметров и адаптируются к широкой категории случаев использования, таких как обобщение текста, создание цифровых изображений и языковой перевод. Поскольку обучение этих моделей обходится дорого, клиенты хотят использовать существующие предварительно обученные базовые модели и настраивать их по мере необходимости, а не обучать эти модели самостоятельно. SageMaker предоставляет тщательно подобранный список моделей, из которых вы можете выбирать на консоли SageMaker.

Вы можете найти модели фундамента от разных поставщиков моделей в SageMaker JumpStart, что позволит вам быстро приступить к работе с моделями фундамента. Вы можете найти базовые модели, основанные на различных задачах или поставщиках моделей, а также легко просмотреть характеристики моделей и условия использования. Вы также можете опробовать эти модели, используя тестовый виджет пользовательского интерфейса. Если вы хотите использовать базовую модель в большом масштабе, вы можете сделать это, не выходя из SageMaker, используя готовые блокноты от поставщиков моделей. Поскольку модели размещаются и развертываются на AWS, вы можете быть уверены, что ваши данные, независимо от того, используются ли они для оценки или масштабного использования модели, никогда не будут переданы третьим лицам.

Откройте для себя модель Code Llama в SageMaker JumpStart

Чтобы развернуть модель Code Llama 70B, выполните следующие шаги в Amazon SageMaker Studio:

  1. На домашней странице SageMaker Studio выберите Толчок в панели навигации.

  2. Найдите модели Code Llama и выберите модель Code Llama 70B из представленного списка моделей.

    Более подробную информацию о модели можно найти в карточке модели Code Llama 70B.

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

  3. Примите лицензионное соглашение с конечным пользователем (EULA) и выберите Развертывать.

    Это запустит процесс развертывания конечной точки, как показано на следующем снимке экрана.

Разверните модель с помощью SageMaker Python SDK.

Альтернативно вы можете выполнить развертывание с помощью примера записной книжки, выбрав Открыть блокнот на странице сведений о модели Classic Studio. В примере записной книжки представлены комплексные инструкции по развертыванию модели для вывода и очистки ресурсов.

Чтобы развернуть с помощью блокнота, мы начинаем с выбора соответствующей модели, указанной в model_id. Вы можете развернуть любую из выбранных моделей в SageMaker с помощью следующего кода:

from sagemaker.jumpstart.model import JumpStartModel

model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-70b")
predictor = model.deploy(accept_eula=False)  # Change EULA acceptance to True

При этом модель развертывается в SageMaker с конфигурациями по умолчанию, включая тип экземпляра по умолчанию и конфигурации VPC по умолчанию. Вы можете изменить эти конфигурации, указав значения, отличные от значений по умолчанию, в JumpStartМодель. Обратите внимание, что по умолчанию accept_eula установлено на False. Вам нужно установить accept_eula=True для успешного развертывания конечной точки. Поступая так, вы принимаете пользовательское лицензионное соглашение и политику допустимого использования, как упоминалось ранее. Вы также можете скачать лицензионное соглашение.

Вызов конечной точки SageMaker

После развертывания конечной точки вы можете выполнить логический вывод с помощью Boto3 или SageMaker Python SDK. В следующем коде мы используем SageMaker Python SDK для вызова модели для вывода и печати ответа:

def print_response(payload, response):
    print(payload("inputs"))
    print(f"> {response(0)('generated_text')}")
    print("\n==================================\n")

Функция print_response принимает полезную нагрузку, состоящую из полезной нагрузки и ответа модели, и печатает выходные данные. Code Llama поддерживает множество параметров при выполнении вывода:

  • максимальная длина – Модель генерирует текст до тех пор, пока длина вывода (включая длину входного контекста) не достигнет max_length. Если указано, оно должно быть положительным целым числом.
  • max_new_tokens – Модель генерирует текст до тех пор, пока длина вывода (исключая длину входного контекста) не достигнет max_new_tokens. Если указано, оно должно быть положительным целым числом.
  • num_beams – Определяет количество лучей, используемых при жадном поиске. Если указано, оно должно быть целым числом, большим или равным num_return_sequences.
  • no_repeat_ngram_size – Модель гарантирует, что последовательность слов no_repeat_ngram_size не повторяется в выходной последовательности. Если указано, оно должно быть положительным целым числом, большим 1.
  • температура – Это контролирует случайность вывода. Выше temperature приводит к выходной последовательности со словами с низкой вероятностью и меньшими temperature приводит к выходной последовательности со словами с высокой вероятностью. Если temperature равно 0, это приводит к жадному декодированию. Если указано, это должно быть положительное число с плавающей запятой.
  • ранняя_остановка – Если Trueгенерация текста завершается, когда все гипотезы луча достигают конца токена предложения. Если указано, оно должно быть логическим.
  • do_sample – Если True, модель выбирает следующее слово в соответствии с вероятностью. Если указано, оно должно быть логическим.
  • top_k – На каждом этапе генерации текста модель отбирает только top_k скорее всего слова. Если указано, оно должно быть положительным целым числом.
  • top_p – На каждом этапе генерации текста модель выбирает наименьший возможный набор слов с кумулятивной вероятностью. top_p. Если указано, это должно быть число с плавающей точкой от 0 до 1.
  • return_full_text – Если True, входной текст будет частью выходного сгенерированного текста. Если указано, оно должно быть логическим. Значение по умолчанию для него False.
  • останавливаться – Если указано, это должен быть список строк. Генерация текста прекращается, если генерируется одна из указанных строк.

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

Завершение кода

В следующих примерах показано, как выполнить завершение кода, когда ожидаемый ответ конечной точки является естественным продолжением приглашения.

Сначала мы запускаем следующий код:

prompt = """\
import socket

def ping_exponential_backoff(host: str):\
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

Мы получаем следующий результат:

"""
    Pings the given host with exponential backoff.
    """
    timeout = 1
    while True:
        try:
            socket.create_connection((host, 80), timeout=timeout)
            return
        except socket.error:
            timeout *= 2

В нашем следующем примере мы запускаем следующий код:

prompt = """\
import argparse
def main(string: str):
    print(string)
    print(string(::-1))
if __name__ == "__main__":\
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
predictor.predict(payload)

Мы получаем следующий результат:

parser = argparse.ArgumentParser(description='Reverse a string')
    parser.add_argument('string', type=str, help='String to reverse')
    args = parser.parse_args()
    main(args.string)

Генерация кода

В следующих примерах показана генерация кода Python с использованием Code Llama.

Сначала мы запускаем следующий код:

prompt = """\
Write a python function to traverse a list in reverse.
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

Мы получаем следующий результат:

def reverse(list1):
    for i in range(len(list1)-1,-1,-1):
        print(list1(i))

list1 = (1,2,3,4,5)
reverse(list1)

В нашем следующем примере мы запускаем следующий код:

prompt = """\
Write a python function to to carry out bubble sort.
"""

payload = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 256, "temperature": 0.1, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

Мы получаем следующий результат:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr(j) > arr(j+1):
                arr(j), arr(j+1) = arr(j+1), arr(j)
    return arr

arr = (64, 34, 25, 12, 22, 11, 90)
print(bubble_sort(arr))

Вот некоторые примеры задач, связанных с кодом, с использованием Code Llama 70B. Вы можете использовать модель для создания еще более сложного кода. Мы рекомендуем вам попробовать его, используя свои собственные варианты использования и примеры, связанные с кодом!

Очистить

После тестирования конечных точек обязательно удалите конечные точки вывода SageMaker и модель, чтобы избежать дополнительных расходов. Используйте следующий код:

predictor.delete_endpoint()

Заключение

В этом посте мы представили Code Llama 70B в SageMaker JumpStart. Code Llama 70B — это современная модель для генерации кода из подсказок на естественном языке, а также из кода. Вы можете развернуть модель, выполнив несколько простых шагов в SageMaker JumpStart, а затем использовать ее для выполнения задач, связанных с кодом, таких как генерация кода и заполнение кода. В качестве следующего шага попробуйте использовать модель со своими собственными вариантами использования и данными, связанными с кодом.


Об авторах

Доктор Кайл Ульрих — учёный-прикладник в команде Amazon SageMaker JumpStart. Его исследовательские интересы включают масштабируемые алгоритмы машинного обучения, компьютерное зрение, временные ряды, байесовские непараметрические методы и гауссовские процессы. Его докторская степень получена в Университете Дьюка, и он опубликовал статьи в журналах NeurIPS, Cell и Neuron.

Доктор Фарук Сабир — старший специалист по архитектуре решений в области искусственного интеллекта и машинного обучения в AWS. Он имеет степени доктора философии и магистра электротехники Техасского университета в Остине и степень магистра компьютерных наук Технологического института Джорджии. Он имеет более чем 15-летний опыт работы, а также любит преподавать и наставлять студентов колледжей. В AWS он помогает клиентам формулировать и решать бизнес-задачи в области науки о данных, машинного обучения, компьютерного зрения, искусственного интеллекта, числовой оптимизации и смежных областях. Живя в Далласе, штат Техас, он и его семья любят путешествовать и совершать длительные поездки.

Джун Вон — менеджер по продукту в SageMaker JumpStart. Он сосредоточен на том, чтобы сделать базовые модели легко обнаруживаемыми и пригодными для использования, чтобы помочь клиентам создавать генеративные приложения искусственного интеллекта. Его опыт работы в Amazon также включает в себя мобильное приложение для покупок и доставку последней мили.

LEAVE A REPLY

Please enter your comment!
Please enter your name here