Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Nara-Information/NA-LLM


https://github.com/Nara-Information/NA-LLM

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        



## Update Logs
- 2023.06.27: [Polyglot-ko 3.8B 기반 NALLM-polyglot-ko-3.8B 모델](https://huggingface.co/Nara-Lab/nallm-polyglot-ko-3.8b-base) 공개
- 2023.06.26: [Polyglot-ko 1.3B 기반 NALLM-polyglot-ko-1.3B 모델](https://huggingface.co/Nara-Lab/nallm-polyglot-ko-1.3b-base) 공개
- 2023.06.27: [KoBART 기반 NALLM-bart 모델](https://huggingface.co/Nara-Lab/nallm-bart) 공개

- - -

# NA-LLM(나름): NAra information Large Language Model
### 👆 하나는 나름 잘 하는 대화형 언어모델

- NA-LLM(나름)은 [나라지식정보](http://narainformation.com/)가 개발한 한국어 Large Language Model (LLM) 입니다.

- 모든 것을 말할 수 있는 언어 모델은 아닙니다. 하지만, 한국 사람들이 공기관에 제기하는 민원과 같은 텍스트를 넣으면, 공기관과 유사한 방식으로 대답하는 것 하나만은 나름 잘 하는 언어모델입니다.


## Example

### 입력

|정보|값 |
|---|---------------------|
|기관|경찰청 |
|제목|행정심판의 대상 |
|질문|행정심판의 대상은 무엇인가요?|

### 출력

#### nallm-polyglot-ko-1.3b

> 행정심판은 행정청의 위법 또는 부당한 처분의 취소 및 위법 또는 부당한 처분의 변경, 부작위에 따른 권리구제절차, 부당해고 등 권리구제절차의 대상이 되는 처분을 행하는 행정기관에 대하여 제기할 수 있는 제도입니다. 행정심판의 대상이 되는 처분에는 행정처분(예-징계해고), 행정지도(단속현장에서의 주의 등), 직권취소, 직권정지, 사실조사개시, 시정지시등이 있습니다.
> 행정처분은 행정청의 의사에 반하는 형식적인 행정작용으로 인하여 국민이 권리를 침해당한 경우에 그 권리의 구제를 위하여 정부가 관여하는 처분을 말하며, 위의 대상이 되는 행정처분으로는 행정청의 의사에 반하는 형식적인 행정행위를 말하며, 그 자체로 행정처분의 성질을 가지는 것은 아니고, 행정청의 의사에 반하는 실질적인 행위가 있는 경우에 한합니다. 행정지도에는 통행시간 또는 주차행위의 허용, 주차위반 사실의 단속현장에서의 주의 등을 말하며, 단속에 대한 행정지도에는 행정처분의 대상이 되지는 않습니다.

#### nallm-bart

> 행정심판은 행정청의 위법부당한 처분이나 부작위를 대상으로 하고 있고, 여기에서 처분은 행정청이 행하는 구체적 사실에 관한 법집행으로서의 공권력의 행사 또는 그 거부, 그 밖에 이에 준하는 행정작용을 말합니다.
> ○ 그런데 공공기관과 체결한 계약은 청구인과 피청구인이 상호 대등한 지위에서 체결한 사법상 계약에 해당하므로 입찰을 무효로 한 것 역시 국가를 당사자로 하는 계약에 부수된 선행절차로서 사법상의 법률행위일 뿐 공공기관이 우월한 공권력의 주체로서 일방적으로 행하는 처분이라고 볼 수 없어 행정심판의

## Backbone Model: KoBART, Polyglot-ko

NA-LLM(나름)은 Backbone Model로 [KoBART](https://huggingface.co/gogamza/kobart-base-v2), [Polyglot-ko](https://github.com/EleutherAI/polyglot)를 사용하여 학습을 진행하였습니다.

훈련은 각각 모델에 맞추어, polyglot-ko는 Decoder만 훈련하는 방식이, KoBART는 Encoder-Decoder 훈련 방식이 진행되었습니다. 사전훈련과 규모에 차이가 큰 만큼 결과가 되는 모델의 성능에도 다소 다른 경향이 있습니다:

|backbone |유창함 |정확함 |하드웨어 |
|-----------|-------------|-----------------|------------------|
|polyglot-ko|높음 |다른 이야기를 하기 쉬움|고사양 CUDA GPU 필요|
|KoBART |제한된 텍스트 생성|파인튜닝 데이터 반영 |CPU로도 서비스 가능 |

각각 모델에 따라 decoding strategy도 달라집니다. 지금으로서는 HuggingFace Transformers 기준으로 polyglot-ko 기반 모델은 beam search, KoBART 기반 모델은 contrastive search가 효율적인 것 처럼 보입니다. testset BLEU 점수를 기반으로 한 최적의 파라미터는 [demos](https://github.com/Nara-Information/NA-LLM/tree/b74ae8f9be79df44b9bf63e324f5c0e357bb5c16/demos) 폴더의 각 파일에 적용되어 있습니다.

## NA-LLM 모델 실행 예시 코드

- [NA-LLM-Polyglot-ko-1.3b](https://githubtocolab.com/Nara-Information/NA-LLM/blob/main/demos/NALLM_polyglot_ko_1_3b_demo.ipynb)
- [NA-LLM-bart](https://githubtocolab.com/Nara-Information/NA-LLM/blob/main/demos/NALLM_bart_demo.ipynb)

기타 내용은 [`demos`](https://github.com/Nara-Information/NA-LLM/tree/b74ae8f9be79df44b9bf63e324f5c0e357bb5c16/demos) 폴더의 노트북을 참고해 주세요. Google colab에서 실행할 때를 기준으로 작성되었습니다.

## Dataset
### 나름 데이터셋 v1
나름 데이터셋 v1은 [공공데이터포털 국민권익위원회_민원정책 질의응답조회서비스](https://www.data.go.kr/data/15074671/openapi.do)를 기반으로 합니다.

구축 시점을 기준으로 939건의 최신 데이터를 수집하였습니다. 데이터의 수가 모델 훈련에 적절한 양이라 볼 수 없어, OpenAI의 API를 통해 질문을 다시말하기(paraphrasing) 방식으로 증강하였습니다.

구체적으로 데이터셋은 아래와 같이 구축되었습니다.

1. 공공데이터포털 데이터 호출
2. 호출된 데이터의 '응답' 정제
- 민원 내용에서의 상투적인 인삿말 제거
- 전화번호, root 아래의 URL 도메인, 담당자등의 실명 등 민원 처리 시점에 따라 변동되는 정보 제거
- 공공데이터포털에서 반출한 HTML 태그 제거 및 HTML string 변환
- 연속되는 줄바꿈, 줄 끝의 공백문자 등의 형식 제거
3. '기관'과 '제목', '질문' 내용을 토대로 '질문' 내용을 세 번 더 만들도록 OpenAI API 호출
4. 호출 결과에서 생성된 '질문' 추출; 생성 결과가 '질문'으로 볼 수 없는 경우 프롬프트 변경 후 재호출
5. 아래와 같은 JSON 데이터 구축

```json
{
"qano": 6837003,
"organization": "경찰청",
"title": "정보공개청구 방법에 대한 문의(전남)",
"question": [
"정보공개 청구방법은 어떻게 하는건가요!"
],
"answer": [
"1. 공공기관의 정보공개에 관한 법률(약칭: 정보공개법)에서의 공개 및 비공개 대상 정보와 정보공개청구 절차에 대하여 답변드리겠습니다.",
"​",
" 가. 공공기관의 정보공개에 관한 법률(이하 “정보공개법) 제3조에 의하면 “공공기관이 보유·관리하는 정보는 이 법이 정하는 바에 따라 공개하여야 한다”라고 하여 원칙적으로 정보를 공개한다고 되어 있습니다.",
" 나. 그러나 국민의 이 정보공개청구권은 모든 정보에 대하여 인정되는 것은 아니고, 이른바 일반적인 사항에 대해서만 인정이 되고 국가안전보장에 관련되는 정보 및 보안업무를 관장하는 기관에서 국가안전보장과 관련된 정보분석을 목적으로 수집되거나 작성된 정보에 대하여는 이를 인정하지 않고 있습니다.",
" # 통상 정보공개가 거부되는 경우는 동법 제9조(비공개 대상) 4항 재판 및 수사와 관련되거나 6항 및 7항에 따라 거부되는 경우가 대부분",
" 다. 정보공개 청구 절차는 정보공개 청구인이 청구인의 이름, 주민등록번호, 주소 및 연락처, 공개를 청구하는 정보의 내용과 공개방법을 기재한 정보공개청구서(인터넷 또는 공공기관 방문)를 제출 하게되면",
" - 공공기관은 10일 이내에 정보공개 여부를 결정(부득이 한 경우 10일 이내의 범위에서 연장가능)하여 청구인에게 공개일시·공개장소 등을 명시하여 청구인에게 통지하게 됩니다(동법 제10조부터 제16조)",
" - 정보의 공개 및 우송 등에 소요되는 비용은 실비의 범위 안에서 청구인의 부담으로 하게 되어 있으나, 공개를 청구하는 정보의 사용목적이 공공복리의 유지·증진을 위하여 필요하다고 인정되는 경우에는 비용을 감면할 수도 있습니다(동법 제17조 제1항, 제2항).",
"2. 정보공개결정에 대하여는 이의가 있을 시 정보공개법 제18조(이의신청)에 따라",
" - 청구인이 정보공개와 관련한 공공기관의 비공개 결정 또는 부분 공개 결정에 대하여 불복이 있거나",
" - 정보공개 청구 후 20일이 경과하도록 정보공개 결정이 없는 때에는 공공기관으로부터 정보공개 여부의 결정 통지를 받은 날 또는 정보공개 청구 후 20일이 경과한 날부터 30일 이내에 해당 공공기관에 이의신청을 할 수 있습니다."
],
"gen1": [
"경찰청에서 정보공개 청구 방법에 대해서 문의드립니다. 저는 전남 지역에 살고 있어서, 이 지역에서 정보공개 청구를 하려면 어떻게 해야 할까요? 알려주시면 감사하겠습니다."
],
"gen2": [
"정보공개 청구 방법을 몰라서 고민하는 중입니다. 경찰청에서 정보를 얻고 싶은데, 어떻게 해야할까요? 전남 지역에 사는데, 전남 지역에서 정보공개 청구를 하는 방법이 궁금합니다. 부탁드립니다."
],
"gen3": [
"경찰청에서 정보공개 청구 방법에 대해서 문의드립니다. 전남 지역에서 정보공개 청구를 하고 싶은데, 어떻게 해야 할까요? 공식적인 양식이나, 처리 절차와 기간, 수수료 등이 궁금합니다. 자세한 설명을 부탁드립니다."
]
},
```
구체적인 데이터는 [`data/inqueries_aug_1_0.json`](https://github.com/Nara-Information/NA-LLM/blob/b74ae8f9be79df44b9bf63e324f5c0e357bb5c16/data/inqueries_aug_1_0.json)을 참고해 주세요.