finetuned_mrc_model_path
inference.py 실행할 때 mrc 모델 train 후에 바로 inference 까지 실행하면 상관없는데
retrieval 만 학습하고 미리 저장해둔 mrc 모델로 inference 를 실행할 경우 project_name 과 run_name 을 맞춰줘야 하는
문제가 있길래 finetuned_mrc_model_path 라는 argument 를 추가했습니다.
elastic_search 라는 project_name 을 설정하고 prediction output 을 얻고 싶었는데 이 부분이 겹쳐서 필요할 것 같아서
따로 지정해줘야 하지만 추가했습니다.
Optional 이라 지정해도되고 안해도되요
그렇지마 안하는 경우에는 미리 저장했던 모델을 불러올 때 project_name 과 run_name 을 맞춰줘야합니다^^
처음에 만들 때 mrc 모델 학습과정 만들고 만들었던거라서 좀 다른분들 불편했을수도 있겠네요
eval_retrieval -> retrieval_type
eval_retrieval 을 제거하고 같은 역할을 하는데 명칭이 좀 명확해지길 바래서 이름을 바꿨습니다.
elastic_index_name
얘는 elastic_search 를 할 때는 sparse_embedding 이나 dense_embedding 을 미리 만들어주는 것처럼 index_name 에
corpus 를 저장하는 작업이 필요한데 그 때 필요한게 index_name 이에요
index_name 에 맞춰서 여러가지 버전을 등록할 수 있고 index_name 이 주어지면 그 저장된 데이터에 맞춰서 비슷한 문장을 불러온다고
이해할 수 있습니다.
이 부분을 추가해줬습니다.
faiss 이용하려면 self.indexer 를 쓰는 것 같아서 추가해둡니다.
물론 없어도 실행하는데는 지장 없을 것 같긴해요
elastic_search.py
elastic_search 를 위한 함수들을 클래스로 묶어놨습니다.
이게 살짝 문제점이 있는게 처음 index_name 에 corpus 를 저장해둘 때 저장하고나면 에러가 뜨더라구요
저장은 잘되는데 다시 실행해야 하는 문제점이 있긴 한데 뭐 한번만 저장하면 그 index_name 불러오는건 문제없더라구요
그래서 그냥 올립니다.
prepare_dataset.py
이거는 데이터를 미리 저장해놓는 파일입니다.
'\n', '\n', '#' 문자 제거하고 영어, 숫자, 한국어, 일본어, 한자, answer 에 포함된 특수문자를 제외한 모든 문자 제거해줍니다.
여기서 중요한 부분은 make_custom_dataset 함수이고 여기에서 데이터들을 미리 만들어놓는 작업을 해줘요
retrieval_test.py
elastic_search 를 사용해서 top-k 에 대한 accuracy 를 확인할 수 있도록 코드 추가했습니다.
utils_qa.py
get_args
training_args.do_predict 인 경우 finetuned_mrc_model_path 가 None 이 아닌 경우에
model_name_or_path 를 finetuned_mrc_model_path 로 설정해주는 코드 추가
get_data
elastic_search 를 이용해서 데이터 가져오는 부분 코드 추가
utils_retrieval.py
run_elasticsearch
이 함수는 elastic_search 를 사용해서 data 만드는 과정입니다.
finetuned_mrc_model_path inference.py 실행할 때 mrc 모델 train 후에 바로 inference 까지 실행하면 상관없는데 retrieval 만 학습하고 미리 저장해둔 mrc 모델로 inference 를 실행할 경우 project_name 과 run_name 을 맞춰줘야 하는 문제가 있길래 finetuned_mrc_model_path 라는 argument 를 추가했습니다. elastic_search 라는 project_name 을 설정하고 prediction output 을 얻고 싶었는데 이 부분이 겹쳐서 필요할 것 같아서 따로 지정해줘야 하지만 추가했습니다. Optional 이라 지정해도되고 안해도되요 그렇지마 안하는 경우에는 미리 저장했던 모델을 불러올 때 project_name 과 run_name 을 맞춰줘야합니다^^ 처음에 만들 때 mrc 모델 학습과정 만들고 만들었던거라서 좀 다른분들 불편했을수도 있겠네요
eval_retrieval -> retrieval_type eval_retrieval 을 제거하고 같은 역할을 하는데 명칭이 좀 명확해지길 바래서 이름을 바꿨습니다.
elastic_index_name 얘는 elastic_search 를 할 때는 sparse_embedding 이나 dense_embedding 을 미리 만들어주는 것처럼 index_name 에 corpus 를 저장하는 작업이 필요한데 그 때 필요한게 index_name 이에요 index_name 에 맞춰서 여러가지 버전을 등록할 수 있고 index_name 이 주어지면 그 저장된 데이터에 맞춰서 비슷한 문장을 불러온다고 이해할 수 있습니다.
이 부분을 추가해줬습니다. faiss 이용하려면 self.indexer 를 쓰는 것 같아서 추가해둡니다. 물론 없어도 실행하는데는 지장 없을 것 같긴해요
elastic_search 를 위한 함수들을 클래스로 묶어놨습니다. 이게 살짝 문제점이 있는게 처음 index_name 에 corpus 를 저장해둘 때 저장하고나면 에러가 뜨더라구요 저장은 잘되는데 다시 실행해야 하는 문제점이 있긴 한데 뭐 한번만 저장하면 그 index_name 불러오는건 문제없더라구요 그래서 그냥 올립니다.
이거는 데이터를 미리 저장해놓는 파일입니다. '\n', '\n', '#' 문자 제거하고 영어, 숫자, 한국어, 일본어, 한자, answer 에 포함된 특수문자를 제외한 모든 문자 제거해줍니다. 여기서 중요한 부분은
make_custom_dataset
함수이고 여기에서 데이터들을 미리 만들어놓는 작업을 해줘요elastic_search 를 사용해서 top-k 에 대한 accuracy 를 확인할 수 있도록 코드 추가했습니다.
:)
다들 이해가 잘되시길 바래요!