모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
Llama2 Fine-Tuning 예제를 보며 meta-llama/Llama-3.1-8B Llama-3.1을 파인튜닝을 하였습니다. 파인튜닝한 모델과 Llama-3.1을 병합하여 파인튜닝된 데이터를 물어보니 어느 정도 대답을 잘 하였습니다. 하지만 파인튜닝된 이외의 질문을 해봤더니 계속해서 파인튜닝된 데이터만 출력해 주고 있습니다. 예를 들어 지구에 대해서 설명해줘라고 했지만 지구와 전혀 상관없는 파인튜닝된 데이터를 출력합니다. 기존 모델의 문제인가 확인하기 위해 파인튜닝과 병합안한 기본 Llama-3.1모델에게 질문하면 지구에 대한 설명을 아주 잘해주고 있습니다. 기본 모델과 파인튜닝한 모델을 병합하면 파인튜닝한 모델 데이터에서만 결과 값을 도출하는지 궁금합니다.
좋은 강의 정말 잘 듣고있습니다. 항상 감사합니다. 다름이 아니라 nn.BCEloss 나 nn.BCEWithLogitsLoss에서 이름에 B(Binary)가 들어가 이진분류 문제에 사용하는 함수인가 싶었는데, 실습 강의때 처럼 다중 분류 문제의 loss 함수로 사용해도 괜찮은 것인지 여쭙고 싶습니다. generate_onehot 함수는 클래스가 10개인 다중분류 데이터를 생성합니다. batch_size = 16 n_class=10 def generate_onehot(batch_size=16, n_class=10): pred = torch.nn.Softmax()(torch.rand(batch_size, n_class)) gt = torch.rand(batch_size, n_class) gt = torch.tensor(gt == torch.max(gt, dim=1, keepdim=True)[0]).float() # convert to onehot return pred, gt
optimizer.zero_grad() 를 호출하여 모델 매개변수의 변화도를 재설정합니다. 기본적으로 변화도는 더해지기(add up) 때문에 중복 계산을 막기 위해 반복할 때마다 명시적으로 0으로 설정합니다. 파이토치 한국어 커뮤니티에서 봤었던 내용이랑 너무 헷갈려서 질문 드립니다. 강사님이 6:00 시작부터 왜 zero_grad()를 사용하는지 설명하시는 부분에서 새로운 출력값에 대한 오차값의 편미분이 누적해서 "곱"해지는 것 처럼 설명해주시는데 , 제가 이해한 바로는 기울기가 이전 반복의 기울기에 "더해지는 것"으로 알고 있거든요 제가 잘못 이해하고 있는 것인지 궁금합니다. 아래가 제가 이해하고있는 과정입니다.(기울기 초기화를 하지 않을시 Pytorch의 누적 과정)
[AI 실무] AI Research Engineer를 위한 논문 구현 시작하기 with PyTorch
강사님께서 마지막 부분에서 jupyter notebook으로 style_loss을 출력하실 때 jupyter를 재시작 하셨는데, 혹시 재시작한 이유가 있을까요? 저도 재시작을 하지 않고 코드를 실행하면 아무것도 출력이 안되다가, 재시작하고 모든 코드를 재실행하니, 출력이 되어서 질문드립니다.
안녕하세요. 말씀하신대로 cd 디렉토리명 입력하고 code . 입력하면 code 는 내부 또는 외부명렬 실행할수 있는 프로그램 또는 배치 파일이 아닙니다 라고 나옵니다. 또 spyder 에서 001 cart visualize 를 실행해봤는데 No module named 'gymnaisum' 이 나옵니다. pip install gymnasium 은 해놓은 상태이고 gym 이 설치되있는것까지 확인했습니다. 어떻게 해결하면 될까요? 감사합니다.
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.) - 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~ - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 파이토치 실습 코드 부분 수강시 마다, 강의와 동일하게 torch.FloatTensor 메서드를 쓰는데도 강의에서 나오는 출력값 : tensor([2.1218e+28, 1.8070e+29, -4.3554e+28]) 실제 출력값 : tensor([0., 0., 0.]) 계속 위와 같은 결과가 나옵니다. 타 웹페이지를 검색해봐도 나오지 않아, 원인 및 조치방법 문의드립니다.
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.) - 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~ - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하십니까? 선생님 강의를 여러개 꾸준히 듣고 있는 학생입니다. 처음하는 딥러닝과 파이토치 강의를 들으며 강의자료에 필기를 하고 싶은데 다운로드가 불가능하여 학습에 조금 불편함을 느끼고 있습니다. 드라이브 강의자료 다운로드 권한을 구매자에 한에 풀어주실순 없으실까요?
안녕하세요. 강의 잘 듣고 있습니다. 종합실습에서 모델을 만들고 돌린 후에 모델 평가 코드를 실행했습니다. 다른 지표는 이전 실습(강의)에서 했던 것과 비슷하게 나왔습니다. 하지만 MAPE 지표는 엄청 큰 값이 나왔습니다. 예) MAPE : 352267848908800.0 혹시 몰라서 참조답안 코드도 전체 실행하고 MAPE 지표를 확인했고 마찬가지로 ( MAPE : 380158091460608.0 ) 엄청 큰 값이 나왔습니다. 왜 이렇게 큰 값이 나온 걸까요? chat한테 물어보니까 다음과 같은 답변을 받았습니다. MAPE 값이 매우 큰 것은 비정상적입니다. 일반적으로 MAPE는 100% 미만의 값을 가집니다. 이렇게 큰 MAPE 값은 다음과 같은 이유로 발생할 수 있습니다: 실제값 중 0 또는 0에 매우 가까운 값이 있어 분모가 극히 작아진 경우 데이터 스케일링 문제로 인해 예측값과 실제값의 차이가 극단적으로 큰 경우 계산 과정에서의 오류 이러한 MAPE 값은 신뢰할 수 없으며, 데이터나 모델에 문제가 있을 가능성이 높습니다. MSE와 MAE는 상대적으로 합리적인 값을 보이고 있으므로, MAPE 계산 과정이나 데이터를 재검토해볼 필요가 있습니다.
[AI 실무] AI Research Engineer를 위한 논문 구현 시작하기 with PyTorch
안녕하세요, 수업 정말 잘 들었습니다 🙂 하나 궁금한 건, vgg19 의 features 및 classifier 를 확인해보니, """ (features): Sequential( (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (1): ReLU(inplace=True) ... (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (35): ReLU(inplace=True) (36): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False) (classifier): Sequential( (0): Linear(in_features=25088, out_features=4096, bias=True) (1): ReLU(inplace=True) """ 이렇게 생겼더라구요. 입력 이미지의 원래 width, height 를 X 라고 했을 때, vgg19 에서 다섯 번의 maxpool2d 및 Conv 레이어를 거치며, 최종적인 width, height, channel 은 X/(2^5), X/(2^5), 512 이 될 것 같고, 이게 Fully Connected Layer 의 입력 unit 25088 개와 같은 숫자가 되려면, X = 224 가 맞는 것 같은데, 강의 코드에서 512 로 설정하신 이유가 특별히 있으실까요?
[AI 실무] AI Research Engineer를 위한 논문 구현 시작하기 with PyTorch
안녕하세요, 수업 정말 잘 들었습니다 🙂 하나 궁금한 건, loss.py 에서 ContentLoss, StyleLoss 를 정의하고, 이후 해당 클래스들을 train.py 에서 불러온 다음 total_loss 를 계산하였는데. 혹시 loss.py 에서 total_loss 의 클래스도 구현하는게 정석적인 건지 아니면 이처럼 train 과정에서 새로운 loss term 을 하이퍼파라미터와 함께 초기화하여 사용하는게 더 일반적인 건지 궁금합니다.
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
지금 fine tuning 단계에서 어떤 데이터셋을 기존의 Llama에 학습을 추가로 시켜서 정보를 더 추가하는 방법 부분을 학습하고 있습니다. 혹시 이 반대와 같은 경우가 가능할까요? 예를들어서 Llama모델에서 한국어로 이루어진 모든 데이터를 전부 제거한다. 이런식의 define tuning이 되는 방법이 있는지 궁금합니다.
안녕하세요. 항상 친절하고 자세하게 강의해주셔서 재미있게 배우고 있습니다. 다름이 아니라, 본 강의에서 설명해주신 Negative Entropy의 의미에 대해 제가 확실하게 이해한 것이 맞는지 질문하려고 글을 남깁니다. [질문 1] 먼저, 아래에 제가 이해한 내용이 맞을까요? KL Div. Loss에서 negative entropy는 오직 Y_i,c에 대한 항으로만 이루어져 있고 Y_hat과는 전혀 상관이 없으므로 모델의 성능과는 관계 없는 항입니다. 따라서, 학습 데이터셋의 확률 분포 측면에서 생각했을 때, negative entropy가 높을 수록 학습 난이도가 낮은 데이터셋(예: 강아지 vs. 선인장 분류 데이터)이라 생각할 수 있고, 학습 난이도가 쉬우면 쉬울 수록 이 negative entropy 항의 값은 증가합니다. [질문 2] 그렇다면, negative entropy 값이 높을 때(=학습 데이터셋 난이도가 낮을 때) KL Div에서 전체적인 loss 값도 커지게 되는데요. Loss 값이 커지면 결과적으로 모델이 학습할 때 더 큰 폭으로 gradient descent를 수행하게 되어서 좋은 것인가요? KL Div에서 negative entropy를 더해주는 것이 모델 학습과 정확히 어떤 관련이 있는지 잘 이해가 가지 않습니다. 감사합니다!