본문 바로가기
프로젝트/나무위키LLM

[namu-wiki-llm] sprint2 회고

by 행복한라이언 2024. 1. 19.
728x90
반응형

1. 한 일 / 미룬 일

  • 기간: 2024.01.11 ~ 2024.01.18
  • 나무위키 덤프 데이터 탐구 ( 데이터 출처: https://huggingface.co/datasets/heegyu/namuwiki-extracted )
    • 구조 및 전처리
      • { 'contributors': ...., 'namespace':...., 'text': ....., 'title': ......} → 전처리된 데이터를 사용하되 우리가 필요한 부분은 text와 title만 필요하다.
      • dataset이 2.56GB로 다운로드 받을 때마다 2 ~ 3분 걸린다. 작업할 때마다 다운로드 받을 수 없기 때문에 pickle로 text와 title만 저장한다.
    • [ERROR] OSError: [Errn 28] No space left on device 
      • 상황: 허깅페이스의 데이터를 load_dataset하는 과정 중에 발생했다.
      • 원인 및 해결: 엄청난 에러는 아니고 용량이 없어서 발생한 문제이다. 375GB 중 374GB를 사용하고 있어서 발생했다. 필요없는 것들 적절하게 삭제한다.
    • [ERROR] VScode 켜지지 않는다!
      • namu_wiki_dump에 565293개의 pickle이 만들어져서 VScode 자체가 켜지지 않는 문제가 발생함.
      • 해결: 설정창 켜서 namu_wiki_dump를 읽지 않도록 함.

  • [CHECK] 대용량 json은 단순 load해서 읽을 수 없다. 왜냐하면 load할 때 메모리에 전체 json파일이 로드가 되어서 터질 가능성이 매우 높다. 따라서 단순 load하는게 아니라 Json Streaming 을 사용해야한다. 이를 사용할 수 있는 라이브러리가 ijson이다.
  • JSON streaming is a technique that processes JSON data in chunks instead of loading the entire file into memory. This approach enables efficient memory usage, faster processing, and the ability to work with massive JSON files that might not fit into memory. ( 출처: https://medium.com/@AlexanderObregon/json-streaming-how-to-work-with-large-json-files-efficiently-c7203de60ac2 )

 

  •  API
    • LLMClient: GPT API를 사용해서 질문에 대해서 답변이 생성되는지 확인함.
    • wiseman API:사용자로부터 받은 질문(text)과 내가 임의로 넣은 관련 문서(str)를 GPT API 호출해서 응답 확인하는 API. novelist - librarian - wiseman API 모두 연결되어 질문(text)을 입력했을 때 내가 임의로 넣은 관련문서를 잘 참조하여 답변하는 것을 postman으로 확인.

  • config.yaml 로 관리
    • openai_key 등 관리
  • 미룬 일
    • 확인할 수 있는 간단한 프론트엔드(gradio, streamlit) 작업
    • 엘라스틱서치, ijson 탐구

2. 회고

  • 알고리즘을 푸느라 조금 소홀하게 했다. 일주일 시간 쓸정도는 아니었는데 ..^^;;
  • 나무위키 덤프 데이터가 생각보다 커서 용량도 터지고 메모리도 터지고...대용량 json은 JSON Streaming을 사용하는 ijson을 사용한다고 한다. 나는 허깅 페이스에 올라온 덤프 데이터를 사용했고 이를 피클로 저장해 ijson을 사용할 필요는 없었는데 대용량 csv, json에 대해서 어떤 방식으로 읽는지에 대해서는 한국어로 잘 설명된게 많이 없더라. 그래서 그 부분은 학습해서 정리해야할 것 같다.
  • 내가 관련문서를 넣어줘서 답변이 완벽할 수 있긴 했지만 답변이 생각보다 잘 나와서 재밌더라. 그런데 문제는 답변하는데 최소 20초에서 많게는 1분이 걸린다. 시간의 비례해서 답변의 퀄리티가 올라가는 것 같은데 서비스를 완성하고 나면 이 부분에서 병목이 발생할 것 같다는 생각이 든다.
728x90
반응형