Sztuczna inteligencja
Llama 2: Głębokie zanurzenie w otwartej, open-source’owej alternatywie dla ChatGPT

Duże modele językowe (LLM) zdolne do złożonych zadań rozumowania wykazały obiecujące wyniki w specjalistycznych dziedzinach, takich jak programowanie i twórcze pisanie. Jednak świat LLM nie jest po prostu rajem “włącz i gotowe”; istnieją wyzwania związane z użytecznością, bezpieczeństwem i wymaganiami obliczeniowymi. W tym artykule zagłębimy się w możliwości Llama 2, jednocześnie zapewniając szczegółową instrukcję dotyczącą konfigurowania tego wysokowydajnego LLM za pomocą Hugging Face i T4 GPU na Google Colab.
Opracowany przez Meta we współpracy z Microsoft, ten otwarty, dużych rozmiarów model językowy ma na celu zdefiniowanie nowych granic sztucznej inteligencji generatywnej i zrozumienia języka naturalnego. Llama 2 nie jest po prostu kolejnym statystycznym modelem wyszkolonym na terabajtach danych; jest wcieleniem filozofii. Jednej, która podkreśla otwarty charakter jako podstawę rozwoju AI, szczególnie w przestrzeni sztucznej inteligencji generatywnej.
Llama 2 i jego substytut zoptymalizowany pod kątem dialogu, Llama 2-Chat, są wyposażone w maksymalnie 70 miliardów parametrów. Przechodzą one proces dokształcania zaprojektowanego w celu dopasowania ich ściśle do preferencji ludzi, co sprawia, że są one zarówno bezpieczniejsze, jak i skuteczniejsze niż wiele innych publicznie dostępnych modeli. Ten poziom szczegółowości w dokształcaniu jest często zarezerwowany dla zamkniętych “produktowych” LLM, takich jak ChatGPT i BARD, które nie są ogólnie dostępne do publicznej kontroli lub personalizacji.
Techniczne zanurzenie w Llama 2
Do szkolenia modelu Llama 2; podobnie jak jego poprzednicy, wykorzystuje auto-regresyjną architekturę transformatora, wstępnie wyszkoloną na obszernym korpusie danych samouczących. Jednak dodaje dodatkową warstwę złożoności, wykorzystując uczenie ze wzmocnieniem z ludzką informacją zwrotną (RLHF), aby lepiej dopasować się do ludzkiego zachowania i preferencji. Jest to obliczeniowo kosztowne, ale niezbędne do poprawy bezpieczeństwa i skuteczności modelu.
Wstępne szkolenie i wydajność danych
Innowacyjność Llama 2 tkwi w jego wstępnym reżimie szkoleniowym. Model bierze wskazówki od swojego poprzednika, Llama 1, ale wprowadza kilka kluczowych usprawnień, aby podnieść swoją wydajność. Warte uwagi są 40% wzrost ogólnej liczby tokenów szkoleniowych i dwukrotny wzrost długości kontekstu. Ponadto model wykorzystuje grupowaną uwagę zapytań (GQA), aby zwiększyć skalowalność inferencji.
Nadzorowane dokształcanie (SFT) i uczenie ze wzmocnieniem z ludzką informacją zwrotną (RLHF)
Llama-2-chat został starannie udoskonalony za pomocą SFT i RLHF. W tym kontekście SFT służy jako integralna część ramy RLHF, udoskonalając odpowiedzi modelu, aby ściśle dopasować się do ludzkich preferencji i oczekiwań.
OpenAI dostarczył przekonywującą ilustrację, która wyjaśnia metody SFT i RLHF zastosowane w InstructGPT. Podobnie jak LLaMa 2, InstructGPT również wykorzystuje te zaawansowane techniki szkoleniowe, aby zoptymalizować swoją wydajność.
Krok 1 na poniższym obrazie koncentruje się na nadzorowanym dokształcaniu (SFT), podczas gdy kolejne kroki ukończą proces uczenia ze wzmocnieniem z ludzką informacją zwrotną (RLHF).
Nadzorowane dokształcanie (SFT) to specjalny proces ukierunkowany na optymalizację wstępnie wyszkolonego dużego modelu językowego (LLM) dla określonego zadania downstream. W przeciwieństwie do metod nienadzorowanych, które nie wymagają walidacji danych, SFT wykorzystuje zestaw danych, który został uprzednio zwalidowany i oznaczony.
Ogólnie rzecz biorąc, tworzenie tych zestawów danych jest kosztowne i czasochłonne. Podejście Llama 2 było ukierunkowane na jakość zamiast ilości. Zaledwie 27 540 adnotacjami zespół Meta osiągnął poziomy wydajności porównywalne z ludzkimi adnotatorami. To odpowiada niedawnym badaniom, które pokazują, że nawet ograniczone, ale czyste zestawy danych mogą prowadzić do wysokiej jakości wyników.
W procesie SFT wstępnie wyszkolony LLM jest narażony na oznaczony zestaw danych, gdzie algorytmy uczenia nadzorowanego wchodzą w grę. Wewnętrzne wagi modelu są skalibrowane na podstawie gradientów obliczonych z funkcji straty określonej dla zadania.
Ta optymalizacja pozwala LLM na zrozumienie złożonych wzorców i niuansów wbudowanych w oznaczony zestaw danych. W konsekwencji model nie jest po prostu zunifikowanym narzędziem, ale ewoluuje w specjalistyczne narzędzie, biegłe w wykonywaniu celu z wysokim stopniem dokładności.
Uczenie ze wzmocnieniem jest następnym krokiem, ukierunkowanym na dopasowanie zachowania modelu do ludzkich preferencji w sposób bardziej ściśle.
Faza strojenia wykorzystywała uczenie ze wzmocnieniem z ludzką informacją zwrotną (RLHF), zastosowując techniki takie jak importance sampling i Proximal Policy Optimization, aby wprowadzić algorytmiczny szum, tym samym unikając lokalnych optymów. To iteracyjne dokształcanie nie tylko poprawiło model, ale także dopasowało jego wyjście do ludzkich oczekiwań.
Llama 2-Chat wykorzystywał protokół porównania binarnego do zebrania danych preferencji ludzi, co stanowi znaczący trend w kierunku bardziej jakościowych podejść. Ten mechanizm poinformował modele nagród, które są następnie wykorzystywane do dokształcania modelu AI conversational.
Ghost Attention: wieloobrotowe dialogi
Meta wprowadził nową funkcję, Ghost Attention (GAtt), która jest zaprojektowana w celu poprawy wydajności Llama 2 w wieloobrotowych dialogach. To skutecznie rozwiązuje utrzymujący się problem utraty kontekstu w trwających rozmowach. GAtt działa jak kotwica, łącząc początkowe instrukcje z wszystkimi następującymi wiadomościami użytkownika. Połączony z technikami uczenia ze wzmocnieniem, pomaga w generowaniu spójnych, istotnych i zgodnych z użytkownikiem odpowiedzi na dłuższe dialogi.
Pobieranie z repozytorium Meta Git za pomocą download.sh
- Odwiedź stronę Meta: Przejdź do oficjalnej strony Llama 2 i kliknij ‘Pobierz model’
- Wypełnij szczegóły: Przeczytaj i zaakceptuj warunki, aby kontynuować.
- Potwierdzenie e-mail: Po przesłaniu formularza otrzymasz e-mail od Meta z linkiem do pobrania modelu z ich repozytorium git.
- Uruchom download.sh: Sklonuj repozytorium git i uruchom skrypt
download.sh. Ten skrypt poprosi Cię o uwierzytelnienie za pomocą adresu URL od Meta, który wygasa w ciągu 24 godzin. Wybierzesz również rozmiar modelu — 7B, 13B lub 70B.
Z Hugging Face
- Otrzymaj e-mail z potwierdzeniem: Po uzyskaniu dostępu od Meta przejdź do Hugging Face.
- Poproś o dostęp: Wybierz swój pożądany model i prześlij prośbę o przyznanie dostępu.
- Potwierdzenie: Oczekuj e-maila z potwierdzeniem w ciągu 1-2 dni.
- Wygeneruj tokeny dostępu: Przejdź do ‘Ustawień’ w swoim koncie Hugging Face, aby utworzyć tokeny dostępu.
Wydanie 4.31 Transformers jest w pełni kompatybilne z LLaMa 2 i otwiera wiele narzędzi i funkcjonalności w ekosystemie Hugging Face. Od skryptów szkoleniowych i inferencyjnych po 4-bitową kwantyzację z bitsandbytes i wydajne dokształcanie parametrów (PEFT), zestaw narzędzi jest obszerny. Aby rozpocząć, upewnij się, że jesteś na najnowszym wydaniu Transformers i zalogowany w swoim koncie Hugging Face.
Oto przewodnik po uruchamianiu modelu LLaMa 2 w środowisku Google Colab, wykorzystując GPU:
Instalacja pakietu
!pip install transformers !huggingface-cli login
Import niezbędnych bibliotek Python.
from transformers import AutoTokenizer import transformers import torch
Zainicjowanie modelu i tokenu
W tym kroku określ, który model Llama 2 będziesz używał. W tym przewodniku używamy meta-llama/Llama-2-7b-chat-hf.
model = "meta-llama/Llama-2-7b-chat-hf" tokenizer = AutoTokenizer.from_pretrained(model)
Konfiguracja potoku
Wykorzystaj potok Hugging Face do generowania tekstu z określonymi ustawieniami:
pipeline = transformers.pipeline( "text-generation", model=model, torch_dtype=torch.float16, device_map="auto")
Generowanie sekwencji tekstu
Na koniec uruchom potok i wygeneruj sekwencję tekstu na podstawie Twojego wejścia:
sequences = pipeline(
‘Kto są kluczowymi współtwórcami w dziedzinie sztucznej inteligencji?\n’,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)















