2023. 9. 20. 07:49ㆍ인공지능
안녕하세요. 쿠루가이입니다.
요즘 Lora를 만져보고 있는데요. 건강에 관심이 많은 쿠루가이는 건강 상담사 LLM을 직접 만들어보고 싶었졌습니다.
물론 기존 chatDoctor 라고해서 아래와 같이 적용해서 만든적이 있었는데 모든 데이터를 가지고 lora를 한게 아니라서 조금 욕심이 나더군요. (아래 LLM은 'BI55/MedText' 를 대화 형식으로 바꾼것입니다)
2023.08.21 - [인공지능] - [LLM] 인공지능 챗으로 동맥경화에 대해서 상담을 받아보았습니다.
타겟 데이터셋은 허깅페이스에 있는 'BI55/MedText' 입니다. 근데 문제는 이게 영어로 되어 있다는거에요. 저는 영어를 모르기때문에 이걸 한국어로 번역해야되는 작업을 해야합니다.
보통 커뮤니티에서 말하는걸 들어보니, Deepl을 이용해서 한국어 번역을 한 데이터셋을 많이 사용하더라고요. 그래서 chatgpt와 대화(?)를 통해서 아래의 코드를 만들었습니다. 한 줄 번역 할때마다 csv 파일로 저장되기때문에 안전(?)합니다.
import pandas as pd
import deepl
auth_key = "Your API KEY"
translator = deepl.Translator(auth_key)
# CSV 파일 경로를 지정합니다.
file_path = './dataset/huggingface.co_datasets_BI55_MedText_raw_main_medtext_2.csv'
# pandas를 사용하여 CSV 파일을 읽어옵니다.
df = pd.read_csv(file_path)
# 번역된 결과를 저장할 빈 리스트를 만듭니다.
translated_a_values = []
translated_b_values = []
# 데이터프레임의 각 행을 반복하면서 번역합니다.
for index, row in df.iterrows():
a_value = row['Prompt']
b_value = row['Completion']
translated_a_value = translator.translate_text(a_value, target_lang="ko")
translated_b_value = translator.translate_text(b_value, target_lang="ko")
# 번역된 결과를 리스트에 추가합니다.
translated_a_values.append(translated_a_value)
translated_b_values.append(translated_b_value)
# 번역된 결과를 포함한 행을 새로운 데이터프레임에 추가합니다.
translated_df = pd.DataFrame({'Prompt_trans': translated_a_values, 'Completion_trans': translated_b_values})
# 번역된 데이터프레임을 현재까지 번역된 결과만을 포함한 CSV 파일로 저장합니다.
translated_df.to_csv('translated_result_partial.csv', index=False, encoding='utf-8-sig')
print("번역이 완료되었습니다.")
Deepl API를 얻기 위해서는 신용카드를 입력해야하는데 몇달전까지만해도 한국 신용카드는 입력 못하게 막혀져 있어서 좌절했었는데 최근에 한국신용카드를 입력할 수 있게 변경되어서 API키를 얻을 수 있게 되었습니다.
단, 무료로 사용하는 경우 한달에 500,000자 까지만 가능합니다. 위의 코드를 돌리니까...759번째 라인에서 할당량 오버되었다는 메시지가 뿌려지면서 멈췄습니다. 한달 단위로 리셋되기때문에 다음달에 760번째부터 돌려봐야겠네요^^
Deepl API의 번역결과는 다음과 같습니다. 번역된 문장을 보면 아주 자연 스럽습니다. 역시 선구자들이 괜히 deepl API를 사용한게 아니였군요. 후후...저의 프로젝트는 모든 번역이 완성되면 고려대학교에서 만든 'nlpai-lab/kullm-polyglot-5.8b-v2' 모델을 이용해 lora를 실시해보겠습니다!
'인공지능' 카테고리의 다른 글
speculative decoding에대해서 (0) | 2024.02.26 |
---|---|
우바부가가 OPENAI 형식으로 통신이 가능하네요. (1) | 2024.02.06 |
RTX 8000를 사용해 LLM을 찍먹해보았습니다. (2) | 2024.01.27 |
F1 Score 측정하는 프로그램 (0) | 2023.10.30 |
github의 llama_cpp.server에 lora 기능을 추가해달라고 요청했다! (0) | 2023.09.19 |
WSL에 우바부가 설치하기 (1) | 2023.08.27 |
딥러닝 기초 용어 정리( Epoch, Loss, Accuracy) (0) | 2023.08.26 |
[LLM] 인공지능 챗으로 동맥경화에 대해서 상담을 받아보았습니다. (0) | 2023.08.21 |