>  기사  >  기술 주변기기  >  학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

PHPz
PHPz앞으로
2023-04-11 23:49:011311검색

현재 인공지능의 획기적인 방향으로 LLM(Large Language Model)이 꼽히고 있습니다. 사람들은 질문과 답변, 생성, 수학적 추론, 코드 작성 등 모든 종류의 복잡한 작업을 수행하는 데 이를 사용하려고 합니다. 최근 ChatGPT의 인기가 가장 좋은 예입니다.

그러나 기계 학습 실무자에게 대형 모델에 대한 문턱은 매우 높습니다. 너무 크고 훈련하기 어렵기 때문에 이 방향은 오랫동안 대기업에 의해 독점되어 왔습니다. 그러나 최근에는 GPT 모델을 단순화하는 방법이 점점 더 많아지고 있습니다. 1월 중순, 전 Tesla AI 수석 이사 Andrej Karpathy(현재 OpenAI로 복귀)가 처음부터 GPT 모델을 구축하는 방법에 대한 완전한 튜토리얼을 발표했습니다​. 그러나 훈련된 GPT와 OpenAI의 GPT-3를 비교하면 둘 사이의 크기 차이는 10,000~100만 배에 이릅니다. 최근 캐나다 McMaster University의 소프트웨어 공학 학부생인 Jay Mody는 NumPy 라이브러리를 가져와 PicoGPT라는 이름을 지정하여 단 60줄의 코드만으로 처음부터 GPT 모델을 구현했습니다. 뿐만 아니라 그는 훈련된 GPT-2 모델 가중치를 구현에 로드하고 일부 텍스트를 생성했습니다. 아래에는 60줄의 코드가 나와 있습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

그러나 이렇게 하려면 Python과 NumPy에 익숙해야 하며 신경망 훈련에 대한 기본적인 경험이 있어야 합니다. 저자는 이 블로그가 GPT에 대해 간단하고 이해하기 쉽고 완전한 소개를 제공하는 것을 목표로 한다고 밝혔습니다. 따라서 저자는 정방향 패스 코드를 구현하기 위해 이미 훈련된 모델 가중치만 사용합니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

코드 주소:

​https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff 6bdec785/gpt2_pico.py#L3-L58​

이 연구를 위해 Andrej Karpathy는 다음과 같은 네 단어를 제시했습니다: 늦었지만 도착했습니다. 당시 Karpathy가 만든 minGPT와 nanoGPT에는 300줄의 코드가 필요했습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.이 튜토리얼은 임계값이 완전히 0이 아니라는 점을 언급할 가치가 있습니다. 독자들의 이해를 돕기 위해 저자는 먼저 GPT가 무엇인지, GPT의 입력과 출력, 기타 내용을 아주 자세하게 소개한다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

GPT가 정확히 무엇을 할 수 있는지에 대해 저자는 이메일을 쓰고, 책을 요약하고, 인스타그램 캡션에 대한 아이디어를 제공하고, 블랙홀을 5가지로 설명할 수 있습니다. , SQL로 코드 작성 등

이 부분을 주의 깊게 읽으면 GPT에 대한 기본 지식을 대략적으로 이해할 수 있습니다. 이 배경 정보를 바탕으로 다음 단계는 설정 방법입니다.

프로젝트 소개

Settings

이 장에서는 주로 인코더, 하이퍼 매개 변수 및 매개 변수 설정 방법을 소개합니다. 🎙

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

참고로 M1 Macbook을 사용하는 경우 pip install을 실행하기 전에 요구사항.txt에서 tensorflow를 tensorflow-macos로 변경해야 합니다. 이 프로젝트의 파일에는 인코더.py, utils.py, gpt2.py, gpt2_pico.py가 포함됩니다.

  • encoder.py: gpt-2 저장소에서 직접 가져온 OpenAI BPE Tokenizer 코드가 포함되어 있습니다. utils.py: GPT-2 모델 가중치, 토크나이저 및 하이퍼파라미터를 다운로드하고 로드하기 위한 코드가 포함되어 있습니다.
  • gpt2.py: Python 스크립트로 실행할 수 있는 GPT 모델 및 생성 코드가 포함되어 있습니다. .py: gpt2.py와 동일하지만 코드 줄이 더 적습니다.
  • gpt2.py를 처음부터 구현해야 하므로 먼저 gpt2.py를 삭제하고 빈 파일을 다시 생성하면 됩니다.

그런 다음 다음 코드를 복사하세요. to gpt2 In .py:

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

위 코드에는 4개의 주요 부분이 포함되어 있습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

gpt2 함수는 이번에 GPT를 구현하는 실제 코드입니다. 자동 회귀 디코딩 알고리즘 ;

main function;
  • fire.Fire(main) 최종적으로 코드를 실행할 수 있도록 파일을 CLI 애플리케이션으로 변환합니다: python gpt2.py "여기에 일부 프롬프트".
  • 주 함수에는 encode, hparams, params 매개변수가 포함되어 있으며 다음 코드를 실행합니다.

그런 다음 필요한 모델 및 토크나이저 파일이 models/124M 파일에 다운로드됩니다.

설정이 완료된 후 저자는 인코더, 하이퍼 매개변수 및 매개변수에 대한 몇 가지 세부 사항을 소개하기 시작합니다. 인코더를 예로 들면, 이 기사의 인코더는 GPT-2에서 사용하는 BPE 토크나이저와 동일합니다. 다음은 이 인코더로 인코딩 및 디코딩된 텍스트의 몇 가지 예입니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

실제 토큰은 다음과 같습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

때때로 토큰이 단어인 경우도 있습니다(예: Not). , 때로는 단어이지만 앞에 공백이 있고(예: Ġall, Ġ는 공백을 나타냄) 때로는 단어의 일부이고(예: capes는 Ġcap과 es로 분할됨) 때로는 구두점입니다(예: .).

BPE의 한 가지 이점은 임의의 문자열을 인코딩할 수 있다는 점이며, 어휘에 존재하지 않는 항목이 있으면 이를 이해하는 하위 문자열로 나눕니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

더 자세한 내용 다시 설명하지 않겠습니다. 다음으로 기본 신경망에 대해 소개하겠습니다. 이 부분은 주로 GELU, Softmax 기능, Layer Normalization 및 Linear를 포함하여 훨씬 더 기본적입니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

각 작은 부분에는 코드 예제가 있습니다. 예를 들어 선형 부분에는 저자가 표준 행렬 곱셈 + 편향을 보여줍니다. 벡터 공간 다른 벡터 공간에 투영하는 코드는 다음과 같습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

GPT 아키텍처

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.이 부분에서는 GPT 자체의 아키텍처를 소개합니다.

Transformer 아키텍처는 다음과 같습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

Transformer는 디코더 스택만 사용합니다(다이어그램의 오른쪽 부분):

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

인코더 제거로 인해 중간 Cross-Attention 레이어도 삭제된다는 점에 유의해야 합니다. ​

상위 수준에서 GPT 아키텍처는 다음 세 부분으로 구성됩니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

텍스트 + 위치 삽입

Transformer 디코더 스택

어휘로의 투영.
  • 코드는 다음과 같습니다:

코드 섹션 스크린샷

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다. 다음으로, 위의 세 부분은 각각 더 자세히 분류되어 있습니다. 여기 또 다시.

위는 저자의 GPT 구현입니다. 다음 단계는 이들을 결합하고 코드를 실행하여 gpt2.py를 얻는 것입니다. 전체 내용은 단 120줄의 코드입니다(주석과 공백을 제거하면 60줄). 저자는 다음과 같은 방법으로 결과를 테스트했습니다.

출력 결과는 다음과 같습니다.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

저자가 말했듯이: 이 실험은 효과가 있었습니다.

이 글은 작가의 아이디어에 따른 전체적인 과정을 간략하게만 소개한 글입니다. 더 알고 싶은 친구들은 원본 링크를 참고하세요.

학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.

원본 링크: https://jaykmody.com/blog/gpt-from-scratch/#basic-layers

위 내용은 학부생들은 60줄의 코드를 사용하여 손으로 대규모 GPT 모델을 만드는 방법을 가르칩니다. 기술 소개는 튜토리얼과 비슷합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제