Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Usługi internetowe Amazona

Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Usługi internetowe Amazona

Dzisiaj z radością ogłaszamy, że modele fundamentów Code Llama opracowane przez firmę Meta są dostępne dla klientów za pośrednictwem Amazon SageMaker JumpStart wdrożyć jednym kliknięciem, aby uruchomić wnioskowanie. Code Llama to najnowocześniejszy model wielkojęzykowy (LLM) umożliwiający generowanie kodu i języka naturalnego na temat kodu zarówno na podstawie podpowiedzi w kodzie, jak i w języku naturalnym. Możesz wypróbować ten model za pomocą SageMaker JumpStart, centrum uczenia maszynowego (ML), które zapewnia dostęp do algorytmów, modeli i rozwiązań ML, dzięki czemu możesz szybko rozpocząć korzystanie z ML. W tym poście opisujemy, jak odkryć i wdrożyć model Code Llama za pomocą SageMaker JumpStart.

Kod Lama

Code Llama to model wydany przez firmę Meta zbudowany na bazie Llama 2. Ten najnowocześniejszy model został zaprojektowany w celu zwiększenia produktywności zadań programistycznych dla programistów, pomagając im w tworzeniu wysokiej jakości, dobrze udokumentowanego kodu. Modele wyróżniają się językami Python, C++, Java, PHP, C#, TypeScript i Bash i mogą zaoszczędzić czas programistów i zwiększyć efektywność przepływu pracy w oprogramowaniu.

Występuje w trzech wariantach, opracowanych z myślą o szerokiej gamie zastosowań: model podstawowy (Code Llama), model specjalistyczny w języku Python (Code Llama Python) oraz model oparty na instrukcjach do zrozumienia instrukcji języka naturalnego (Code Llama Instruct). Wszystkie warianty Code Llama są dostępne w czterech rozmiarach: parametry 7B, 13B, 34B i 70B. Warianty podstawowe i instruktażowe 7B i 13B obsługują wypełnianie w oparciu o otaczającą zawartość, co czyni je idealnymi do zastosowań asystenta kodowania. Modele zostały zaprojektowane przy użyciu Llama 2 jako podstawy, a następnie przeszkolone na 500 miliardach tokenów danych kodu, przy czym wyspecjalizowana wersja Pythona została przeszkolona na przyrostowych 100 miliardach tokenów. Modele Code Llama zapewniają stabilne generacje z maksymalnie 100,000 16,000 tokenów kontekstu. Wszystkie modele są szkolone na sekwencjach 100,000 XNUMX tokenów i wykazują ulepszenia na danych wejściowych z maksymalnie XNUMX XNUMX tokenów.

Model jest dostępny pod tą samą nazwą licencja społecznościowa jako Llama 2.

Modele podstawowe w SageMaker

SageMaker JumpStart zapewnia dostęp do szeregu modeli z popularnych centrów modeli, w tym Hugging Face, PyTorch Hub i TensorFlow Hub, których możesz używać w toku prac programistycznych ML w SageMaker. Ostatnie postępy w uczeniu maszynowym dały początek nowej klasie modeli znanych jako modele fundamentów, które są zazwyczaj szkolone na miliardach parametrów i można je dostosować do szerokiej kategorii przypadków użycia, takich jak podsumowywanie tekstu, generowanie dzieł sztuki cyfrowej i tłumaczenie językowe. Ponieważ uczenie tych modeli jest drogie, klienci chcą korzystać z istniejących, wstępnie wytrenowanych modeli podstawowych i dostrajać je w razie potrzeby, zamiast samodzielnie szkolić te modele. SageMaker udostępnia wyselekcjonowaną listę modeli, spośród których możesz wybierać w konsoli SageMaker.

W SageMaker JumpStart można znaleźć modele fundamentów od różnych dostawców modeli, co umożliwia szybkie rozpoczęcie pracy z modelami fundamentów. Możesz znaleźć modele podstawowe w oparciu o różne zadania lub dostawców modeli, a także łatwo przeglądać charakterystykę modelu i warunki użytkowania. Możesz także wypróbować te modele za pomocą widżetu testowego interfejsu użytkownika. Jeśli chcesz używać podstawowego modelu na dużą skalę, możesz to zrobić bez opuszczania programu SageMaker, korzystając z gotowych notatników od dostawców modeli. Ponieważ modele są hostowane i wdrażane w AWS, możesz mieć pewność, że Twoje dane, niezależnie od tego, czy zostaną użyte do oceny czy wykorzystania modelu na dużą skalę, nigdy nie zostaną udostępnione stronom trzecim.

Odkryj model Code Lamy w SageMaker JumpStart

Aby wdrożyć model Code Llama 70B, wykonaj następujące kroki w Studio Amazon SageMaker:

  1. Na stronie głównej SageMaker Studio wybierz Szybki start w okienku nawigacji.

    Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

  2. Wyszukaj modele Code Llama i wybierz model Code Llama 70B z wyświetlonej listy modeli.

    Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

    Więcej informacji o modelu znajdziesz na karcie modelu Code Llama 70B.

    Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

    Poniższy zrzut ekranu przedstawia ustawienia punktu końcowego. Możesz zmienić opcje lub użyć domyślnych.

  3. Zaakceptuj Umowę licencyjną użytkownika końcowego (EULA) i wybierz Rozmieścić.
    Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

    Spowoduje to rozpoczęcie procesu wdrażania punktu końcowego, jak pokazano na poniższym zrzucie ekranu.

    Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wdróż model za pomocą pakietu SageMaker Python SDK

Alternatywnie możesz wdrożyć za pomocą przykładowego notesu, wybierając Otwórz notatnik na stronie szczegółów modelu w Classic Studio. Przykładowy notes zawiera kompleksowe wskazówki dotyczące wdrażania modelu na potrzeby wnioskowania i czyszczenia zasobów.

Aby wdrożyć za pomocą notebooka, zaczynamy od wybrania odpowiedniego modelu, określonego przez model_id. Możesz wdrożyć dowolny z wybranych modeli w SageMaker za pomocą następującego kodu:

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

Spowoduje to wdrożenie modelu w SageMaker z domyślnymi konfiguracjami, w tym domyślnym typem instancji i domyślnymi konfiguracjami VPC. Można zmienić te konfiguracje, określając wartości inne niż domyślne w Model JumpStart. Pamiętaj, że domyślnie accept_eula jest ustawione na False. Musisz ustawić accept_eula=True aby pomyślnie wdrożyć punkt końcowy. Robiąc to, akceptujesz umowę licencyjną użytkownika i zasady dopuszczalnego użytkowania, jak wspomniano wcześniej. Możesz również pobieranie umowę licencyjną.

Wywołaj punkt końcowy SageMaker

Po wdrożeniu punktu końcowego można przeprowadzić wnioskowanie przy użyciu programu Boto3 lub zestawu SDK języka Python SageMaker. W poniższym kodzie używamy pakietu SageMaker Python SDK do wywołania modelu w celu wnioskowania i wydrukowania odpowiedzi:

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

Funkcja print_response pobiera ładunek składający się z ładunku i odpowiedzi modelu i drukuje dane wyjściowe. Code Lama obsługuje wiele parametrów podczas wnioskowania:

  • maksymalna długość – Model generuje tekst do momentu osiągnięcia długości wyjściowej (w tym długości kontekstu wejściowego). max_length. Jeśli jest określony, musi być dodatnią liczbą całkowitą.
  • max_new_tokens – Model generuje tekst aż do osiągnięcia długości wyjściowej (z wyłączeniem długości kontekstu wejściowego). max_new_tokens. Jeśli jest określony, musi być dodatnią liczbą całkowitą.
  • liczba_wiązek – Określa liczbę wiązek używanych w wyszukiwaniu zachłannym. Jeśli określono, musi to być liczba całkowita większa lub równa num_return_sequences.
  • no_repeat_ngram_size – Model zapewnia, że ​​sekwencja słów z no_repeat_ngram_size nie powtarza się w sekwencji wyjściowej. Jeśli jest określony, musi być dodatnią liczbą całkowitą większą niż 1.
  • temperatura – Kontroluje losowość sygnału wyjściowego. Wyższy temperature skutkuje sekwencją wyjściową ze słowami o niskim prawdopodobieństwie i niższymi temperature skutkuje sekwencją wyjściową zawierającą słowa o wysokim prawdopodobieństwie. Jeśli temperature wynosi 0, powoduje to zachłanne dekodowanie. Jeśli jest określony, musi to być dodatnia liczba zmiennoprzecinkowa.
  • wcześnie_zatrzymanie - Jeśli True, generowanie tekstu kończy się, gdy wszystkie hipotezy dotyczące wiązki dotrą do końca żetonu zdania. Jeśli jest określony, musi to być wartość logiczna.
  • zrobić_próbkę - Jeśli True, model próbkuje następne słowo zgodnie z prawdopodobieństwem. Jeśli jest określony, musi to być wartość logiczna.
  • góra_k – Na każdym etapie generowania tekstu model pobiera wyłącznie próbki z top_k najbardziej prawdopodobne słowa. Jeśli jest określony, musi być dodatnią liczbą całkowitą.
  • góra_p – Na każdym etapie generowania tekstu model pobiera próbki z najmniejszego możliwego zestawu słów ze skumulowanym prawdopodobieństwem top_p. Jeśli określono, musi to być liczba zmiennoprzecinkowa z zakresu od 0 do 1.
  • return_full_text - Jeśli True, tekst wejściowy będzie częścią tekstu wygenerowanego na wyjściu. Jeśli jest określony, musi to być wartość logiczna. Wartość domyślna to False.
  • Zatrzymaj się – Jeśli określono, musi to być lista ciągów. Generowanie tekstu zostaje zatrzymane, jeśli zostanie wygenerowany którykolwiek z określonych ciągów.

Podczas wywoływania punktu końcowego można określić dowolny podzbiór tych parametrów. Następnie pokażemy przykład wywołania punktu końcowego z tymi argumentami.

Uzupełnianie kodu

Poniższe przykłady pokazują, jak wykonać uzupełnianie kodu, gdy oczekiwana odpowiedź punktu końcowego jest naturalną kontynuacją monitu.

Najpierw uruchamiamy następujący kod:

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)

Otrzymujemy następujący wynik:

""" 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

W następnym przykładzie uruchamiamy następujący kod:

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)

Otrzymujemy następujący wynik:

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

Generowanie kodu

Poniższe przykłady pokazują generowanie kodu w języku Python przy użyciu Code Lama.

Najpierw uruchamiamy następujący kod:

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)

Otrzymujemy następujący wynik:

def reverse(list1): for i in range(len(list1)-1,-1,-1): print(list1[i]) list1 = [1,2,3,4,5]
reverse(list1)

W następnym przykładzie uruchamiamy następujący kod:

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)

Otrzymujemy następujący wynik:

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))

Oto niektóre przykłady zadań związanych z kodem przy użyciu Code Llama 70B. Możesz użyć modelu do wygenerowania jeszcze bardziej skomplikowanego kodu. Zachęcamy do wypróbowania go, korzystając z własnych przypadków użycia i przykładów związanych z kodem!

Sprzątać

Po przetestowaniu punktów końcowych pamiętaj o usunięciu punktów końcowych wnioskowania SageMaker i modelu, aby uniknąć naliczania opłat. Użyj następującego kodu:

predictor.delete_endpoint()

Wnioski

W tym poście przedstawiliśmy Code Lama 70B w SageMaker JumpStart. Code Llama 70B to najnowocześniejszy model do generowania kodu na podstawie podpowiedzi w języku naturalnym oraz kodu. Możesz wdrożyć model w kilku prostych krokach w SageMaker JumpStart, a następnie użyć go do wykonywania zadań związanych z kodem, takich jak generowanie kodu i wypełnianie kodu. W następnym kroku spróbuj użyć modelu z własnymi przypadkami użycia i danymi związanymi z kodem.


O autorach

Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.dr Kyle Ulrich jest naukowcem stosowanym w zespole Amazon SageMaker JumpStart. Jego zainteresowania badawcze obejmują skalowalne algorytmy uczenia maszynowego, wizję komputerową, szeregi czasowe, nieparametrykę Bayesa i procesy Gaussa. Jego doktorat uzyskał na Duke University i opublikował artykuły w czasopismach NeurIPS, Cell i Neuron.

Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Doktor Farooq Sabir jest starszym architektem rozwiązań w zakresie sztucznej inteligencji i uczenia maszynowego w AWS. Posiada tytuł doktora i magistra inżynierii elektrycznej uzyskany na University of Texas w Austin oraz tytuł magistra informatyki uzyskany na Georgia Institute of Technology. Ma ponad 15-letnie doświadczenie zawodowe, a także lubi uczyć i mentorować studentów. W AWS pomaga klientom formułować i rozwiązywać ich problemy biznesowe w zakresie nauki o danych, uczenia maszynowego, wizji komputerowej, sztucznej inteligencji, optymalizacji numerycznej i pokrewnych dziedzin. Mieszka w Dallas w Teksasie i wraz z rodziną uwielbia podróżować i wyruszać w długie podróże.

Code Llama 70B jest już dostępny w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Wygrana czerwca jest menedżerem produktu w SageMaker JumpStart. Koncentruje się na ułatwianiu odkrywania i wykorzystywania modeli podstawowych, aby pomóc klientom w tworzeniu generatywnych aplikacji AI. Jego doświadczenie w Amazon obejmuje także aplikację do zakupów mobilnych i dostawę „ostatniej mili”.

Znak czasu:

Więcej z Uczenie maszynowe AWS