모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
이번 강의의 다음 코드에서 왜 prompt 의 instruction 과 response 앞에 ### 을 넣어주는건가요? # 빠른 학습을 위해 20개만 추출 num_items = 20 final_prompt_list = [] for idx, (question, answer) in enumerate(refined_dict.items()): if idx >= num_items: break prompt = f"Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: {question} ### Response: {answer}" print(idx, prompt) prompt_dict = {} prompt_dict['text'] = prompt final_prompt_list.append(prompt_dict)
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
LLama2 모델을 이용하여 특정 분야의 리포트를 작성해주는 모델로 파인튜닝 하고 싶습니다.(Chat GPT 의 complete 모델 처럼) 너무 막연한 질문이긴 하지만.. 이때 필요한 데이터 셋의 형태는 어떤 형태이며, 어떤 모델을 어떤식으로 파인튜닝을 진행해야하는지 가이드를 주실 수 있을까요? 예를들어 제가 원하는 모델은 input 으로 "안녕하세요. 이번 보고서" 라는 텍스트를 넣으면 output 으로 "에서는 다음과 같은 내용을 다룰예정입니다." 의 텍스트가 나오는 것 입니다. input 텍스트를 넣으면 input 텍스트 이후에 올 수 있는 특정 분야에 관련된 텍스트를 자동으로 완성해주는 모델을 만들기 위해서 어떤식으로 접근해야 할까요?
cnn에서는 다음과 같이 dataloader로 부터 얻은 data를 gpu로 변경 했습니다. seq, target = data[0].to(device),data[1].to(device), 하지만 RNN에서는 다음과 같이 cpu로 처리 합니다. 이유가 무엇 인가요?? seq, target = data
안녕하세요. '비전 트랜스포머-최신 모델' 강의 11:36 근처 슬라이드를 기준으로 질문드리겠습니다. (사실 그 이후부터 계속 지속적으로 차원 혼동이 있는 것 같아서, 하나를 기준삼아서 질문드리면 나머지가 저절로 해결될 것 같습니다.) p=(size of patch)로 정의를 하고 사진을 N개로 쪼갠다고 가정했을 때, 그것을 flatten시켜준 각각의 벡터들, (x_{p}^{i}, i=1,...,N)이라고 가정했을 때, 해당 벡터는 P^2*C 차원의 벡터들이 되는 거잖아요? 그렇다면, 그 N개의 벡터들을 concatenate하여 행렬 x_p를 구축했을 때, 그 차원은 (P^2*C) by N이 되어야 하는게 아닌가요? 이 이후부터 슬라이드에서는 가로와 세로가 뒤바뀌어 있는 것 같은데 뭐 실전에서는 transpose하면 되는 문제긴 하지만 나름대로 엄청나게 궁금해져서 질문을 드려봅니다. 설명을 해주신거나 그림을 그려주시는 것은 모두 x_{p}^{i}가 열벡터이고 concatenate를 하실 때 row-wise가 아니라 column-wise로 합치신 것 같아서 그렇게 생각이 들었습니다.
안녕하세요! 수업중 궁금한 부분이 있어 문의 드립니다. self.encoder = nn.Sequential( nn.Conv2d(1, k, 3, stride=2), # 흑백 이미지로 체널이 1개, 나머지는 임의로 설정 nn.ReLU(), nn.Conv2d(k, 2*k, 3, stride=2), nn.ReLU(), nn.Conv2d(2*k, 4*k, 3, stride=1), nn.ReLU(), Flatten(), nn.Linear(1024, 10), nn.ReLU() nn.Linear(1024, 10) 이 부분에서, MNIST의 경우 미리 계산하면 1024가 나온다고 말씀 주셨는데요, 어떻게 계산해야 하는건지 알 수 있을까요? 또한, 이 수치를 코드 작성자가 꼭 계산해서 넣어줘야 하는지도 궁금합니다! 크기(1024)를 코드로 출력해서 확인해 보는 방법이나, 저 부분에 1024 크기가 계산되어 들어가도록 코드를 작성할 수도 있을까요?
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
autotrain advanced 사용시 --use_peft 옵션을 사용하면 어떤 peft 방식을 사용하게 되는건가요? autotrain advanced 사용시 LoRA, Prefix Tunning 등 특정 방식으로 학습하도록 선택이 가능한가요? autotrain advanced에서 --use_peft 등 parameter 값들에 대한 사용법이나 정보를 어디서 얻을 수 있나요? document 페이지를 찾아보려고 하는데 내용이 잘 없는것같아서요. autotrain advanced는 유료인가요? 이런 페이지를 봤습니다. https://huggingface.co/docs/autotrain/cost
1.q와 k를 내적 하는 이유가 궁금합니다. 이는 입력의 유사도 행렬을 얻기 위함으로 알고 있습니다. 그렇다면 q와 k가 아닌 q와 q의 트랜스포즈로 내적하면 안되는걸까요? 음 ...업데이트 할때 q와 k가 비슷하게 학습되었다는 가정을 가지고 내적 한걸까요? 2.그리고 Multi Head와 그냥 Self attention의 차이가 궁금합니다. 별도의 파라미터로 학습되기때문에 하나일때보다 많은 관점이 녹아있다고 생각하면 될까요? 3.다른 댓글에서 코드A@V가 리니어 라고 하셨는데요 PPT에서는 SA(z)=Av와 [SA1(z)...]Umsa가 따로 있습니다. 코드에서는 A@V만 있는데 어떻게 연결지어서 봐야 할지 잘 모르겠습니다.
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
Llama2 학습시 일반 질문 답변 관련 해서 문의드립니다. 이번강의에서 Llama2를 파인튜닝하는것 으로 알고있는데, 기본적으로 학습되어있는 모델을 추가 정보를 넣어준다는 개념으로 알고 있었습니다. 결과 테스트시, 20문장 외엔 어떠한 답변도 못하는것을 확인 했는데, 저희가 사용한 모델(TinyPixel/Llama-2-7B-bf16-sharded)이 정보도 가지고 있지않아서그런건가요? 기본적인 대화가 가능한 모델은 어떤게 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. IMDBDataset 파일 다운로드가 안되는데 어떻게 받을 수 있을까요? > !gdown https://drive.google.com/uc?id=1RFs-jV18dy9I3cWQ2M80kHfON-fDCerg ------------------------------------------- Access denied with the following error: Cannot retrieve the public link of the file. You may need to change the permission to 'Anyone with the link', or have had many accesses. You may still be able to access the file from the browser: https://drive.google.com/uc?id=1RFs-jV18dy9I3cWQ2M80kHfON-fDCerg
실제 캐글(Kaggle) 문제 풀고, 제출해보며, 성능 개선 기법 익히기5 강의에서 질문입니다. 해당 강의 2:50 부분부터 Evaluation 코드에 관해 설명을 해주셨는데요, with torch.no _grad() 안쪽의 코드에서는 with torch.no_grad(): model.eval() ret = None for img, fileid in data_loader: img = img.to(device) pred = model(img) ids += list(fileid) # ex) [1, 2] + [3, 4] -> [1, 2, 3, 4] if ret is None: ret = pred.cpu().numpy() else: ret = np.vstack([ret, pred.cpu().numpy()]) return ret, ids pred.cpu().numpy()와 같이 detach()를 따로 사용하지 않은 걸 볼 수 있었습니다. detach()의 사용에 관해서 찾아보니, with torch.no _grad() 블록은 역전파(gradient 계산)를 비활성화 하므로, pred는 gradient 계산과 관련이 없기에, detach()를 따로 호출하지 않고 numpy 배열로 변환할 수 있다 라는 내용을 찾을 수 있었습니다. 그 전에 수업 시간에 보여주신 코드에서는 model.eval() with torch.no_grad(): for x_minibatch in x_test_batch_list: y_minibatch_pred = model(x_minibatch) print(len(y_minibatch_pred), y_minibatch_pred.shape) y_pred_list.extend(y_minibatch_pred.squeeze().detach().tolist()) 이와 같이 with torch.no _grad() 안에서도 detach()를 사용하신 코드들을 볼 수 있었는데요, Evaluation 단계에서 detach()의 사용이 필수적인 것인지 여쭙고 싶습니다!
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
colab무료 자원이 없어서, jupyter notebook환경에서 fine-turning을 진행하는데 CUDA Version: 12.2 에서 autotrain llm시 libcusparse.so.11: cannot open shared object file: No such file or directory 에러가 발생하고 있습니다. 혹시 해결방법을 조언받을수 있을까요?
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
openai.FineTuningJob.create(training_file="file-G8e3McuXFWVZnm1XSNB-----", model="gpt-3.5-turbo") 위의 코드에 대해서 아래와 같이 메세지가 나오면서 실행이 안됩니다 ㅠㅜ { "name": "AttributeError", "message": "module 'openai' has no attribute 'FineTuningJob'", "stack": "--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) /Users/loveyourself/dev/LLM/chatBot/worKBee/worKBee.ipynb 셀 3 line 1 ----> <a href='vscode-notebook-cell:/Users/loveyourself/dev/LLM/chatBot/worKBee/worKBee.ipynb#W3sZmlsZQ%3D%3D?line=0'>1</a> openai.FineTuningJob.create(training_file=\"file-G8e3McuXFWVZnm1XSNBtMrmA\", model=\"gpt-3.5-turbo\") AttributeError: module 'openai' has no attribute 'FineTuningJob'" } FineTuningJob 이 없다고 하는데 어떻게 해야하나요..
실제 캐글 문제 풀고 제출해보며 성능 개선 기법 익히기8 강의의 3:20 부분에서 궁금한 점이 있어 질문 올립니다. 해당 코드에서는 저장된 model_efficientnet-b7_without_scheduler_adam_1e5_epoch20.pth 모델을 load할 때, model_efficientb7 = deepcopy(model) PATH = '/content/drive/MyDrive/Colab Notebooks/Dataset/Dogs vs Cats/' model_efficientb7.load_state_dict(torch.load(PATH + 'model_efficientnet-b7_without_scheduler_adam_1e5_epoch20.pth')) 다음과 같이 model의 뼈대를 다시 구성한 후, load_state_dict 메소드를 이용하여 가중치 값을 업데이트 하였습니다. 이때, model_efficientb7 = deepcopy(model) 와 같이 그냥 model 객체가 아닌, deepcopy(model)을 사용한 특별한 이유가 있는지 궁금합니다. deepcopy를 사용할 경우, 'model_efficientb7'과 'model' 객체는 서로 독립적인 객체로 유지된다는 점은 파악할 수 있었는데요, model_efficientb7에 적용되는 변화와는 별개로 model 객체 자체를 유지하려는 의도에서 사용한 것이라고 보면 되는지 여쭙고 싶습니다!