Delete kcmii_lm_full_ft.ipynb
Browse files- kcmii_lm_full_ft.ipynb +0 -311
kcmii_lm_full_ft.ipynb
DELETED
|
@@ -1,311 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"cells": [
|
| 3 |
-
{
|
| 4 |
-
"cell_type": "markdown",
|
| 5 |
-
"id": "96468b93-985d-4714-b234-b56ad8f1cfe3",
|
| 6 |
-
"metadata": {},
|
| 7 |
-
"source": [
|
| 8 |
-
"full fine tuning 으로 진행"
|
| 9 |
-
]
|
| 10 |
-
},
|
| 11 |
-
{
|
| 12 |
-
"cell_type": "code",
|
| 13 |
-
"execution_count": 12,
|
| 14 |
-
"id": "56c6181a-2b4e-49ac-a25d-a54eb3a51110",
|
| 15 |
-
"metadata": {},
|
| 16 |
-
"outputs": [
|
| 17 |
-
{
|
| 18 |
-
"name": "stdout",
|
| 19 |
-
"output_type": "stream",
|
| 20 |
-
"text": [
|
| 21 |
-
"사용 디바이스: mps\n"
|
| 22 |
-
]
|
| 23 |
-
},
|
| 24 |
-
{
|
| 25 |
-
"name": "stderr",
|
| 26 |
-
"output_type": "stream",
|
| 27 |
-
"text": [
|
| 28 |
-
"Xet Storage is enabled for this repo, but the 'hf_xet' package is not installed. Falling back to regular HTTP download. For better performance, install the package with: `pip install huggingface_hub[hf_xet]` or `pip install hf_xet`\n"
|
| 29 |
-
]
|
| 30 |
-
}
|
| 31 |
-
],
|
| 32 |
-
"source": [
|
| 33 |
-
"import torch\n",
|
| 34 |
-
"from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer\n",
|
| 35 |
-
"from datasets import load_dataset\n",
|
| 36 |
-
"\n",
|
| 37 |
-
"device = torch.device(\"mps\" if torch.backends.mps.is_available() else \"cpu\")\n",
|
| 38 |
-
"print(\"사용 디바이스:\", device)\n",
|
| 39 |
-
"\n",
|
| 40 |
-
"model_name = \"EleutherAI/polyglot-ko-1.3b\"\n",
|
| 41 |
-
"tokenizer = AutoTokenizer.from_pretrained(model_name)\n",
|
| 42 |
-
"model = AutoModelForCausalLM.from_pretrained(model_name).to(device)\n",
|
| 43 |
-
"\n",
|
| 44 |
-
"dataset = load_dataset(\"json\", data_files=\"dataset/kcmii_major_instruction_data_summarized.jsonl\", split=\"train\")\n",
|
| 45 |
-
"\n",
|
| 46 |
-
"def tokenize(example):\n",
|
| 47 |
-
" prompt = f\"{example['instruction']}\\n답변: {example['response']}\"\n",
|
| 48 |
-
" print(prompt)\n",
|
| 49 |
-
" tokenized = tokenizer(prompt, padding=\"max_length\", truncation=True, max_length=512)\n",
|
| 50 |
-
" tokenized[\"labels\"] = tokenized[\"input_ids\"].copy()\n",
|
| 51 |
-
" return tokenized"
|
| 52 |
-
]
|
| 53 |
-
},
|
| 54 |
-
{
|
| 55 |
-
"cell_type": "code",
|
| 56 |
-
"execution_count": 8,
|
| 57 |
-
"id": "aa3434d0-7b59-4db4-9b74-90d0da6ef6eb",
|
| 58 |
-
"metadata": {
|
| 59 |
-
"scrolled": true
|
| 60 |
-
},
|
| 61 |
-
"outputs": [
|
| 62 |
-
{
|
| 63 |
-
"name": "stderr",
|
| 64 |
-
"output_type": "stream",
|
| 65 |
-
"text": [
|
| 66 |
-
"Map: 100%|██████████| 50/50 [00:00<00:00, 1405.40 examples/s]"
|
| 67 |
-
]
|
| 68 |
-
},
|
| 69 |
-
{
|
| 70 |
-
"name": "stdout",
|
| 71 |
-
"output_type": "stream",
|
| 72 |
-
"text": [
|
| 73 |
-
"어문학이란 무엇인가요?\n",
|
| 74 |
-
"답변: 어문학 전공에서는 동·서양 언어의 원리를 체계적으로 연구하고, 각 나라의 문학과 문화를 이해하여 세계화 시대에 요구되는 인문학적 교양과 언어 관련 실무적 능력을 계 발한다. 어문학 전공은 언어적 감각, 논리적 사고력, 비판적 분석 능력이 필요하고, 언어 와 문학 그리고 다양한 국가의 사회·문화적 특성에 대해 관심이 있어야 한다.\n",
|
| 75 |
-
"문화·인류·역사이란 무엇인가요?\n",
|
| 76 |
-
"답변: 문화·인류·역사 전공은 인간이 출현한 시기부터 현재까지의 문화와 사회를 탐구하 고, 시대별로 문화 및 사회의 특성을 연구하여 역사적 의의를 이해하는 분야이다. 문화· 인류·역사 전공은 고도의 관찰력 및 분석력이 필요하고, 한국사 및 세계사 그리고 다양 한 사회적·역사적 현상에 대해 관심이 있어야 한다.\n",
|
| 77 |
-
"철학이란 무엇인가요?\n",
|
| 78 |
-
"답변: 철학 전공에서는 자신을 둘러싼 자연, 우주, 사회에 대한 의미를 통찰하고 이를 논리 적으로 분석하여 인간 행위와 세계에 대한 의미를 탐색한다. 철학 전공은 자연, 우주, 사 회를 논리적으로 분석하여 그것의 의미를 탐색하는 통합적 사고 능력이 필요하고, 인간 본성과 존재 가치, 삶의 본질에 대해 관심이 있어야 한다.\n",
|
| 79 |
-
"법학이란 무엇인가요?\n",
|
| 80 |
-
"답변: 법학 전공은 법과 관련된 기초적인 이론에서부터 사법, 공법, 사회법 및 국제 관계와 관련된 다양한 법학 이론들을 습득하고 이를 구체적인 사례에 적용한다. 법학 전공자는 사건과 상황을 분석하여 타당한 결론에 이를 수 있는 사고력과 공정한 판단력이 필요하 고, 법률과 관련된 사회현상 및 사회문제에 대해 관심과 흥미가 있어야 한다.\n",
|
| 81 |
-
"정치·국제관계이란 무엇인가요?\n",
|
| 82 |
-
"답변: 정치·국제관계 전공은 한 국가 내 혹은 여러 국가 간의 정치적 현상을 분석하고 비판 하며, 국내·외의 정치적 현상과 국제 관계에 대한 이론과 실제를 연구한다. 정치·국제관 계 전공자는 국제적 현상과 국가 간 관계·세력 변화 등을 파악할 수 있는 분석력과 논리 력이 필요하고, 국내·외의 다양한 정치·경제·사회적 이슈에 대한 문제의식과 관심, 흥미 가 있어야 한다.\n",
|
| 83 |
-
"행정이란 무엇인가요?\n",
|
| 84 |
-
"답변: 행정 전공은 국민과 정부 간의 상호작용, 다양한 공공부문에서의 행정 및 정책과 관 련된 현상을 분석함으로써 공공분야 관리 등 ��가 운영을 효율적으로 수행할 수 있는 방 안을 모색한다. 행정 전공자는 사회 문제에 대한 합리적인 판단 능력과 사회 문제를 효 율적으로 해결할 수 있는 문제해결 능력이 필요하고, 공공의 문제와 정책 그리고 정부와 공공 기관의 성격, 업무 등에 대해 관심과 흥미가 있어야 한다.\n",
|
| 85 |
-
"사회이란 무엇인가요?\n",
|
| 86 |
-
"답변: 사회 전공은 사회의 다양한 현상과 문제를 관찰, 분석하고 이를 통해 그것의 의미를 해석함으로써 사회 구성원들 간의 상호작용 및 사회구조에 대하여 탐구하고 현대 사회 의 문제들을 해결한다. 사회 전공자는 사회 현상을 객관적으로 관찰하고 과학적으로 분 석할 수 있는 능력이 필요하고, 개인적·사회적 수준의 다양한 문제를 탐구하는 것에 관 심과 흥미가 있어야 한다.\n",
|
| 87 |
-
"심리이란 무엇인가요?\n",
|
| 88 |
-
"답변: 심리 전공은 인간의 행동과 정신 과정, 개인 간 상호관계 형성에 관한 심층적 연구를 통해 개인이 가진 심리·정서적 문제를 해결하고 조화로운 인격 형성과 인성 회복을 위 한 방안을 모색한다. 심리 전공자는 심리 현상에 대한 실험과 조사를 과학적으로 실시하 고, 세밀하게 관찰하며, 결과를 논리적으로 해석할 수 있는 능력이 필요하고, 사람들의 사고, 성격, 행동 및 그와 관련되는 사회 현상에 대한 관심과 흥미가 있어야 한다.\n",
|
| 89 |
-
"사회복지이란 무엇인가요?\n",
|
| 90 |
-
"답변: 사회복지 전공은 가족·아동·청소년·노인·여성 등 사회 구성원의 일정한 생활 수준 및 보건 상태를 확보하기 위해 사회 정책 및 제도와 관련된 이론과 방법을 탐구한다. 사 회복지 전공자는 사회 구성원의 일정한 생활 수준 및 보건 상태를 지원하기 위한 사회 정책 및 제도 등을 학문적으로 이해할 수 있는 능력이 필요하고, 주위 이웃에 대한 관심 과 봉사정신이 있어야 한다.\n",
|
| 91 |
-
"문헌정보이란 무엇인가요?\n",
|
| 92 |
-
"답변: 문헌정보 전공은 각종 지적 활동에 필요한 정보 및 문헌의 속성을 이해하고, 다양한 미디어를 통해 정보를 효율적으로 수집, 정리, 가공, 관리, 배포하는 지식 정보 관리 능력 을 계발한다. 문헌정보 전공자는 상황에 따른 적합한 도서 및 자료의 수집·정리·가공 능 력, 도서 및 자료의 관리 및 활용을 위한 전산 처리 및 통계 처리 능력이 필요하고, 다양 한 분야의 도서와 자료에 대한 관심과 흥미가 있어야 한다.\n",
|
| 93 |
-
"언론·홍보·미디어이란 무엇인가요?\n",
|
| 94 |
-
"답변: 언론·홍보·미디어 전공은 사회의 여러 영역에서 이루어지는 대중 매체의 소통 과정 을 분석, 연구하여 다양한 미디어 콘텐츠 제작과 바람직한 미디어·대중 매체의 발전 방 안에 대해 연구한다. 언론·홍보·미디어 전공자는 최신 트렌드를 파악하는 능력, 정확한 정보 전달을 위한 커뮤니케이션 능력, 그리고 매력적 콘텐츠 생산을 위한 예술성 및 창 의력이 필요하고, 대중 매체와 다양한 콘텐츠, 뉴미디어 등에 대한 관심이 있어야 한다.\n",
|
| 95 |
-
"도시·지역이란 무엇인가요?\n",
|
| 96 |
-
"답변: 도시·지역 전공은 도시 및 지역과 관련된 각종 문제를 분석하고 이를 합리적으로 해 결할 수 있는 방안을 모색하여 국토를 경제적, 사회적, 문화적 측면에서 조화롭고 균형 있게 발전하는 방안에 대해 연구한다. 도시·지역 전공자는 도시의 기능과 역할, 교통 체 계, 지역적 특성에 적합한 사회기반시설 등에 대한 이해 능력과 창의력, 공간지각력이 필요하고, 공간에 대한 호기심이 있어야 한다.\n",
|
| 97 |
-
"군사·국방·안보이란 무엇인가요?\n",
|
| 98 |
-
"답변: 군사·국방·안보 전공은 군사 정책 및 전략에 필요한 전문 지식을 습득하고, 다양한 상황에서 실질적으로 대처 가능한 군사 운용 능력을 계발하며, 투철한 국가관을 함양하 여 국가의 안보에 기여한다. 군사·국방·안보 전공자는 군병력을 통솔하는 리더십과 올 바른 국가관, 훈련 및 실전에 대비한 강한 체력과 정신력, 통찰력 및 판단력이 필요하고, 국가의 안보 환경에 대한 이해와 관심이 있어야 한다.\n",
|
| 99 |
-
"경찰·소방·안전이란 무엇인가요?\n",
|
| 100 |
-
"답변: 경찰·소방·안전 전공은 각종 범죄 현상의 원인과 대책을 연구하거나 안전 관리에 대 한 이론적 지식 및 실무 능력을 습득함으로써 범죄, 위험 및 재난으로부터 국민의 생명 과 재산을 보호한다. 경찰·소방·안전 전공자는 현장에서의 돌발 상황을 해결할 수 있는 리더십과 조직적 사고, 책임감, 상황판단력이 ���요하고, 사회 문제 및 범죄 해결, 각종 사 건·사고에 관심과 흥미가 있어야 한다.\n",
|
| 101 |
-
"경영이란 무엇인가요?\n",
|
| 102 |
-
"답변: 경영 관련 전공에서는 기업 경영에 필요한 여러 가지 이론과 기법을 연구하고, 생활 에 필요한 다양한 상품 또는 서비스를 생산, 유통, 판매하는 전 과정에 대해 연구한다. 경 영학 관련 전공자에게는 효율적인 경영 활동에 대한 분석·실행 능력과 합리적 의사결정 능력이 필요하고, 조직의 성과를 높이기 위한 경영 활동 및 글로벌 기업 환경의 변화에 대한 관심과 흥미가 있어야 한다.\n",
|
| 103 |
-
"경제·금융·부동산이란 무엇인가요?\n",
|
| 104 |
-
"답변: 경제·금융·부동산 전공은 국가, 조직, 개인 등의 경제 상황을 분석·진단하여 경제 관 련 문제에 적절히 대응할 수 있는 방법을 연구한다. 따라서 금융의 흐름을 파악하기 위 한 분석력과 수학 능력, 정보처리 및 활용능력이 필요하고, 국가 및 세계 경제의 흐름에 관심이 있어야 한다.\n",
|
| 105 |
-
"무역·물류이란 무엇인가요?\n",
|
| 106 |
-
"답변: 무역·물류 전공은 물품·서비스·기술·자원 등의 국가 간 이동과 물품의 생산에서 공 급에 이르는 일련의 과정을 경제적이고 효율적으로 관리하는 방법 및 국제 경제 교류와 관련된 사안에 대해 연구한다. 그러므로 무역·물류 전공자는 세계 소비경향 및 자원의 흐름을 분석하고 이해하는 능력과 관련 정보를 경영, 경제, 법, 보험, 외국어 등의 인접 학문과 연계할 수 있는 능력이 필요하고, 국제 경제 교류에 대해 관심이 있어야 한다.\n",
|
| 107 |
-
"회계·세무이란 무엇인가요?\n",
|
| 108 |
-
"답변: 회계·세무 전공은 기업의 회계정보를 체계적인 방법으로 산출·분석하고, 세무와 관 련된 효율적인 의사결정 방안을 탐색한다. 따라서 이해관계를 분석하고 예측할 수 있는 수리 능력 및 논리력이 필요하고, 경제 및 기업 자원의 효율적 배분에 관심이 있어야 한다.\n",
|
| 109 |
-
"관광이란 무엇인가요?\n",
|
| 110 |
-
"답변: 관광 전공에서는 관광을 통한 삶의 질 향상을 위해 국내외 관광지를 파악하고, 관광 현상에 대한 학문적 분석과 실무적인 정책을 수립한다. 그러므로 관광 상품의 개발 및 기획 능력, 외국어 능력, 인적 네트워크 형성 능력이 필요하고, 여행 및 관광에 대한 흥미 와 관심이 있어야 한다.\n",
|
| 111 |
-
"교육이란 무엇인가요?\n",
|
| 112 |
-
"답변: 교육 전공은 교육 기관 안팎의 교육활동을 총체적으로 이해하고, 교육과 관련한 다 양한 문제에 대해 해결 방법을 모색한다. 따라서 교육 현상 및 교육 정책 등에 대한 판단 력과 교육 문제의 원인을 체계적으로 파악하는 분석력이 필요하고, 인간과 교육 활동에 대한 관심이 있어야 한다.\n",
|
| 113 |
-
"유아교육이란 무엇인가요?\n",
|
| 114 |
-
"답변: 유아교육 전공에서는 영·유아기 발달에 대한 체계적인 이론을 이해하고, 이를 현장 에 적용해 보는 실습을 통해 영·유아의 신체적, 정서적 발달에 따른 교육 방법에 대해 학 습한다. 따라서 아동의 발달, 심리와 행동, 부모 교육 등 아동에 대한 전문적인 지식과 아 동의 수준에 맞는 의사소통 능력과 언어 구사 능력이 필요하고, 아동 보육에 대한 책임 감이 있어야 한다.\n",
|
| 115 |
-
"초등교육이란 무엇인가요?\n",
|
| 116 |
-
"답변: 초등교육 전공에서는 만 6∼12세 아동을 대상으로, 그들의 심리적 특성을 파악하고 국어, 수학, 미술 등 다양한 교과 이론을 적용하여 교육 현장에서 교사로서 업무를 수행 할 수 있는 방법들을 학습한다. 따라서 초등학교 교과에 대한 기초 지식과 다양한 교육 방법을 고안할 수 있는 창의력, 어린이의 발달에 대한 높은 이해 능력이 필요하고, 초등 교육에 대한 관심이 있어야 한다.\n",
|
| 117 |
-
"중등교육이란 무엇인가요?\n",
|
| 118 |
-
"답변: 중등교육 전공에서는 만 13∼18세 중·고등학교 학생들을 대상으로 그들을 가르치 기 위해 특정 교과목을 전공하고, 교육 현장에서 교사로서 업무를 수행할 수 있는 방법 들을 학습한다. 이에 중·고등학교 교과에 대한 지식, 현행 교육과정 및 교육정책에 대한 이해, 학생 지도 능력, 교육 현상을 종합적으로 이해하고 비판할 수 있는 능력이 필요하 고, 중·고등학교 교육에 대한 관심이 있어야 한다.\n",
|
| 119 |
-
"특수교육이란 무엇인가요?\n",
|
| 120 |
-
"답변: 특수교육 전공에서는 신체적, 정신적, 사회적 발달 장애를 지닌 학생들에게 적합한 교육을 제공하여 그들이 사회 구성원으로서 생활할 수 있도록 교육하는 특수교육 전문 가를 양성한다. 따라서 특수교육에 대한 전문적인 지식을 바탕으로 다양한 상황에서의 대처 능력이 필요하고, 장애학생에 대한 사랑, 교사로서의 소명 의식과 봉사 및 희생 정 신이 있어야 한다.\n",
|
| 121 |
-
"수학이란 무엇인가요?\n",
|
| 122 |
-
"답변: 수학 전공에서는 다양한 물체나 공간, 현상을 계량화하여 분석·설명하고, 수의 체계 와 성질을 연구한다. 수학 전공은 논리적인 사고와 분석력, 추리력이 필요하고, 문제 해 결 과정을 중요하게 생각하며 수의 성질에 대한 흥미가 있어야 한다.\n",
|
| 123 |
-
"통계이란 무엇인가요?\n",
|
| 124 |
-
"답변: 통계 전공에서는 연구목적에 부합하는 자료를 수집, 요약함으로써 사회 각 분야의 다양한 특성 및 정보를 분석하고 해석하는 이론과 방법을 연구한다. 통계 전공은 다양한 통계 방법론을 적용할 수 있는 응용력과 정보를 분석하고 추리할 수 있는 능력이 필요하 고, 수학에 대한 흥미가 있어야 한다.\n",
|
| 125 |
-
"물리·천문이란 무엇인가요?\n",
|
| 126 |
-
"답변: 물리·천문 전공에서는 모든 자연현상을 존재하는 힘의 원리와 우주에서 일어나는 다양한 현상을 관측하여 우주의 질서와 법칙을 탐구한다. 물리·천문 전공은 눈에 보이 지 않는 작은 세계를 포함해 지구와 우주에 대한 창의적인 사고 능력, 천체나 지구에서 일어나는 현상을 분석하는 논리적인 사고 능력이 필요하고, 다양한 자연 현상에 대한 관 심이 있어야 한다.\n",
|
| 127 |
-
"지질·대기·해양이란 무엇인가요?\n",
|
| 128 |
-
"답변: 지질·대기·해양 전공에서는 지구를 구성하는 물질의 성분, 구조, 형성 및 변화 과정 등을 연구하고 지구를 둘러싼 대기와 해양의 자연 현상에 대해 탐구한다. 지질·대기·해 양 전공은 과학 교과 전반에 대한 기본 지식 그리고 자연 환경에 대한 관찰력과 탐구력 이 필요하고, 자연, 대기, 바다에서 발생하는 자연 현상에 관심이 있어야 한다.\n",
|
| 129 |
-
"농림·축산·수산이란 무엇인가요?\n",
|
| 130 |
-
"답변: 농림·축산·수산 전공에서는 농·축·수산물을 효율적으로 관리하고 개발, 생산하기 위 한 연구를 수행하며, 농·축·수산 식품의 생산, 가공처리, 유통 등에 대한 지식을 습득하 여 관련된 문제들을 탐색하고 해결방법을 모색한다. 농림·축산·수산 전공은 생화학적 기초와 생명과학 및 화학 지식이 필요하고, 농어촌 환경과 동·식물에 대한 관심이 있어 야 한다.\n",
|
| 131 |
-
"식품영양이란 무엇인가요?\n",
|
| 132 |
-
"답변: 식품영양 전공에서는 개인, 가정, 집단의 음식 섭취와 식생활 문제를 분석하고, 건강 한 삶의 유지를 목적으로 하는 식생활의 질적 향상을 위해 건강 및 영양을 관리·증진하 는 방안에 대하여 연구한다. 식품영양 전공은 식품, 영양에 대한 중요성을 이해하고 제 품 개발이나 첨단기술 적용을 위한 창의력, 응용력이 필요하며, 다양한 식품의 성분과 영양소에 대해 흥미가 있어야 한다.\n",
|
| 133 |
-
"기계이란 무엇인가요?\n",
|
| 134 |
-
"답변: 기계 전공에서는 다양한 산업분야의 토대가 되는 각종 기계와 장비의 설계, 제작, 이 용, 관리 등에 대한 이론과 응용에 대해 연구한다. 기계 전공자에게는 수학, 물리 등 기초 과학 지식이 필요하고, 기계 작동 원리를 이해하기 위한 논리력과 지식 및 이론을 응용 할 수 있는 능력이 필요하며 기계, 자동차, 전기, 전자 등에 대한 흥미가 있어야 한다.\n",
|
| 135 |
-
"전기·전자이란 무엇인가요?\n",
|
| 136 |
-
"답변: 전기·전자 전공에서는 전기 및 자기의 흐름과 고체, 기체, 진공 내에서의 전자 운동 을 탐구하고 이것을 실생활에 응용하는 방법을 연구하는 학문이다. 전기·전자 전공자에 게는 새로운 기능을 전기·전자제품으로 구현할 수 있는 창의력, 분석적 사고가 필요하 고, 전기전자 시스템 이해를 위한 논리적 사고가 필요하며, 수학, 물리학에 대한 흥미가 있어야 한다.\n",
|
| 137 |
-
"컴퓨터·소프트웨어이란 무엇인가요?\n",
|
| 138 |
-
"답변: 컴퓨터·소프트웨어 전공에서는 컴퓨터의 하드웨어와 소프트웨어, 멀티미디어 등 컴퓨터와 관련된 기술과 지식을 습득하고 이를 바탕으로 다양한 분야에 적용하는 학문 이다. 컴퓨터·소프트웨어 전공자에게는 새로운 소프트웨어 개발에 필요한 컴퓨터 프로 그래밍 언어에 대한 지식과 논리적 사고능력 및 창의력이 필요하고, 수학에 대한 흥미와 관심이 있어야 한다.\n",
|
| 139 |
-
"정보·통신·보안이란 무엇인가요?\n",
|
| 140 |
-
"답변: 정보·통신·보안 전공에서는 컴퓨터공학기반 지식을 바탕으로 ICT(정보통신기술) 및 다양한 융합산업분야의 정보·통신·보안에 관한 이론을 습득하고 이를 적용하는 학문이 다. 정보·통신·보안 전공자에게는 수학, 통계, 물리 등에 대한 기본 지식과 전기, 전자, 컴 퓨터에 대한 기초지식, 논리적 사고력, 창의적이며 유연한 사고, 정확한 판단력이 필요 하고, 다양한 산업의 정보·통신 분야에 관심이 있어야 한다.\n",
|
| 141 |
-
"산업공학이란 무엇인가요?\n",
|
| 142 |
-
"답변: 산업공학 전공에서는 제품 생산과 전달의 전 과정에 필요한 기계, 기술, 인적자원 등 에 관한 최적의 시스템을 연구한다. 산업공학 전공자에게는 데이터에 기반하여 시스템 의 효율성을 높일 수 있는 문제해결능력과 사고력이 필요하고, 공학뿐 아니라 경영학 등 의 사회과학에 관심이 있어야 한다.\n",
|
| 143 |
-
"건축·토목이란 무엇인가요?\n",
|
| 144 |
-
"답변: 건축·토목 전공에서는 건축물 및 도로, 항구, 댐 등의 사회기반시설을 설계하고 건축 하기 위한 이론을 연구한다. 건축·토목 전공자에게는 수학, 과학 등 기초분야를 비롯하 여 컴퓨터 활용 능력, 공간 지각력 및 공간 이해력이 필요하고, 아름다운 건축 설계를 위 한 문화적·미적 감각이 있어야 한다.\n",
|
| 145 |
-
"환경·에너지이란 무엇인가요?\n",
|
| 146 |
-
"답변: 환경·에너지 전공에서는 자연을 구성하는 물, 대기, 토양과 생태계에서 일어나는 환 경 변화, 에너지의 생산 과정 및 변환 과정 등을 탐구하여 인간의 삶의 질 향상을 목적으 로 하는 학문이다. 환경·에너지 전공자에게는 실험 연구를 위한 분석적 사고와 집중력, 화학, 물리, 수학 등 기초과학 분야에 대한 이해 능력이 필요하고, 환경문제 및 자연에 대 한 넓은 이해와 관심이 있어야 한다.\n",
|
| 147 |
-
"생명과학·생명공학이란 무엇인가요?\n",
|
| 148 |
-
"답변: 생명과학·생명공학 전공에서는 생명체에 대한 지식과 이해를 바탕으로 다양한 생 명 현상의 과정을 탐구하며, 의료, 환경 등의 연구와 산업에 기초가 되는 학문이다. 생명 과학·생명공학 전공자에게는 자연과학 분야에 대한 깊이 있는 이해와 지식 그리고 관찰 력, 논리적 사고, 분석력, 통찰력이 필요하고, 다양한 생명 현상과 생명체에 관심이 있어 야 한다.\n",
|
| 149 |
-
"화학·화학공학이란 무엇인가요?\n",
|
| 150 |
-
"답변: 화학·화학공학 전공에서는 화학 반응의 원리를 실생활에 응용하는 기술과 방법을 연구하는 학문으로, 고분자, 신에너지, 환경기술 등 화학 공정이 필요한 산업에 활용되 는 학문이다. 화학·화학공학 전공자에게는 수학, 물리 등 기초과학분야에 대한 지식과 분석적인 사고 능력이 필요하고, 꼼꼼하고 주의 깊은 성격과 물질 변화에 대한 관심이 있어야 한다.\n",
|
| 151 |
-
"재료·신소재이란 무엇인가요?\n",
|
| 152 |
-
"답변: 재료·신소재 전공에서는 다양한 재료의 구조와 특징을 이해하고 산업에 필요한 신 소재, 생체재료, 기능재료 등의 첨단 재료에 대해 연구하고 개발하는 학문이다. 재료·신 소재 전공자에게는 다양한 소재에 대한 이해와 이를 실생활에 적용시킬 수 있는 응용력, 실험·실습을 위한 분석적 사고력이 필요하고, 수학, 화학, 물리 등 기초과학에 관심이 있 어야 한다.\n",
|
| 153 |
-
"의학이란 무엇인가요?\n",
|
| 154 |
-
"답변: 의학 전공은 인체에서 발생하는 질병의 예방·진단·치료와 관련된 지식을 습득하고, 이를 활용하여 환자를 진료하며, 의학 이론을 탐구함으로써 질병 예방 및 치료 방안에 대한 연구를 수행한다. 의학 전공자는 화학 및 생명과학의 기초 지식과 과학적 사고방 식, 의학적 진단과 처치를 위한 추론력이 필요하고, 환자의 고통을 이해하며 생명을 구 하는 일에 보람을 느끼고, 인체의 구조와 기능에 관심이 있어야 한다.\n",
|
| 155 |
-
"약학이란 무엇인가요?\n",
|
| 156 |
-
"답변: 약학 전공은 질병의 예방 및 치료에 사용되는 의약품에 관한 기초 이론과 의약품의 개발, 생산, 조제와 관련된 지식을 습득하고 이에 대해 연구한다. 약학 전공자는 실험 및 실습에서의 침착함, 깊은 주의력 그리고 분석적인 사고력이 필요하고, 화학, 생명과학에 관심이 있어야 한다.\n",
|
| 157 |
-
"간호이란 무엇인가요?\n",
|
| 158 |
-
"답변: 간호 전공은 인간이 건강을 유지 및 증진하고 질병으로부터 회복할 수 있도록 하는 이론과 실무 그리고 간호 대상자의 간호 문제를 진단, 중재, 평가할 수 있는 능력을 개발 하고 적용한다. 간호 전공자는 화학 및 생명과학에 대한 이해와 환자 ��호를 위한 의사 소통 능력이 필요하고, 질병과 환자의 고통에 관심과 배려가 있어야 한다.\n",
|
| 159 |
-
"보건·임상이란 무엇인가요?\n",
|
| 160 |
-
"답변: 보건·임상 전공은 공중보건, 개인 위생 등 건강을 향상시키기 위한 방안을 탐색하고, 신체적·정신적 장애를 가진 사람들을 보조하는 치료 시설과 첨단 의료 장비를 다루고 만드는 기술에 대해 연구한다. 보건·임상 전공자는 기초과학에 대한 지식을 바탕으로 공중보건과 개인 위생에 대한 이해 능력, 환자 상태에 따라 적절한 치료 방법을 수행하 는 실행 능력이 필요하고, 보건의료인으로서의 사명감이 있어야 한다.\n",
|
| 161 |
-
"무용이란 무엇인가요?\n",
|
| 162 |
-
"답변: 무용 전공에서는 무용 이론과 관련된 전문 지식을 습득하고. 실기 교육을 통해 균형 있는 신체의 움직임을 연마하여 무용 작품에 대한 해석력과 예술적 표현력 등을 함양한 다. 따라서 음악과 주제에 맞춰 몸으로 표현할 수 있는 능력이 필요하고, 강한 체력과 유 연한 신체조건을 갖추기 위한 끈기와 인내심이 있어야 한다.\n",
|
| 163 |
-
"체육이란 무엇인가요?\n",
|
| 164 |
-
"답변: 체육 전공에서는 신체활동을 바탕으로 하는 운동, 건강, 스포츠 과학, 여가에 대한 이론을 배우고 이와 관련한 특정 실기 실습을 수행하여 신체적 능력을 계발한다. 체육을 전공하기 위해서는 강인한 체력 및 정신력 그리고 경기를 정당하게 치르기 위한 스포츠 맨십이 필요하고, 운동하기를 좋아하는 마음과 스포츠에 관심이 있어야 한다.\n",
|
| 165 |
-
"연예·영화·연극이란 무엇인가요?\n",
|
| 166 |
-
"답변: 연예·영화·연극 전공은 다양한 매체를 활용하여 새로운 영상 언어를 창출하고 영화, 연극 등의 분야에서 인간의 정서를 전달할 수 있는 활동을 수행한다. 따라서 배역에 대 한 분석력, 연기력, 예술적 지식이 필요하고, 생각을 매체를 통해 표현하는 능력이 필요 하며 미술, 음악, 무용, 어학, 연극, 사회학, 언론학 등 다양한 분야에 관심이 있어야 한다.\n",
|
| 167 |
-
"음악이란 무엇인가요?\n",
|
| 168 |
-
"답변: 음악 전공에서는 음악 전반에 관한 이론 학습과 다양한 음악 관련 기교의 훈련을 통 해 기존 음악을 연주하거나 새로운 음악을 창작하며, 전문적으로 감상 및 비평하는 능력 을 계발한다. 그러므로 청음능력, 창의력, 음악을 소리나 악기로 표현할 수 있는 연주 능 력이 필요하고, 음감과 음악적 감수성이 있어야 한다.\n",
|
| 169 |
-
"미술·공예·디자인이란 무엇인가요?\n",
|
| 170 |
-
"답변: 미술·공예·디자인 전공은 미술 전반에 대한 지식과 실기 교육을 통해 미술적 상상력 과 창의성 및 여러 가지 표현 방법을 습득하고, 기능적·심미적 조건을 고려하여 각종 상 품의 디자인을 개발하고 연구한다. 따라서 미술 작품을 만들기 위한 독창성과 창의성, 정교한 기법 활용 능력이 필요하고, 예술 분야에서의 변화와 유행에 민감해야 한다.\n",
|
| 171 |
-
"디지털콘텐츠이란 무엇인가요?\n",
|
| 172 |
-
"답변: 디지털콘텐츠 전공에서는 뉴미디어 매체인 디지털 게임, 디지털 영상, 애니메이션, 인터랙티브 디자인콘텐츠 등의 기획과 연출을 수행하고, 다양한 시각적 표현과 디자인 을 탐색 및 창출한다. 그러므로 디지털콘텐츠 전공자가 되기 위해서는 디지털 기술에 대 한 지식, 디지털콘텐츠 제작 능력, 트렌드를 파악하는 능력, 창의력, 기획력이 필요하고, 다양한 매체에 대한 관심이 있어야 한다.\n"
|
| 173 |
-
]
|
| 174 |
-
},
|
| 175 |
-
{
|
| 176 |
-
"name": "stderr",
|
| 177 |
-
"output_type": "stream",
|
| 178 |
-
"text": [
|
| 179 |
-
"\n"
|
| 180 |
-
]
|
| 181 |
-
}
|
| 182 |
-
],
|
| 183 |
-
"source": [
|
| 184 |
-
"tokenized_dataset = dataset.map(tokenize)"
|
| 185 |
-
]
|
| 186 |
-
},
|
| 187 |
-
{
|
| 188 |
-
"cell_type": "code",
|
| 189 |
-
"execution_count": 10,
|
| 190 |
-
"id": "6fda32f9-7048-446f-8fc8-818aaff3c904",
|
| 191 |
-
"metadata": {},
|
| 192 |
-
"outputs": [
|
| 193 |
-
{
|
| 194 |
-
"name": "stderr",
|
| 195 |
-
"output_type": "stream",
|
| 196 |
-
"text": [
|
| 197 |
-
"/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/utils/data/dataloader.py:683: UserWarning: 'pin_memory' argument is set as true but not supported on MPS now, then device pinned memory won't be used.\n",
|
| 198 |
-
" warnings.warn(warn_msg)\n"
|
| 199 |
-
]
|
| 200 |
-
},
|
| 201 |
-
{
|
| 202 |
-
"data": {
|
| 203 |
-
"text/html": [
|
| 204 |
-
"\n",
|
| 205 |
-
" <div>\n",
|
| 206 |
-
" \n",
|
| 207 |
-
" <progress value='5' max='250' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
|
| 208 |
-
" [ 5/250 07:56 < 10:48:26, 0.01 it/s, Epoch 0.08/5]\n",
|
| 209 |
-
" </div>\n",
|
| 210 |
-
" <table border=\"1\" class=\"dataframe\">\n",
|
| 211 |
-
" <thead>\n",
|
| 212 |
-
" <tr style=\"text-align: left;\">\n",
|
| 213 |
-
" <th>Step</th>\n",
|
| 214 |
-
" <th>Training Loss</th>\n",
|
| 215 |
-
" </tr>\n",
|
| 216 |
-
" </thead>\n",
|
| 217 |
-
" <tbody>\n",
|
| 218 |
-
" </tbody>\n",
|
| 219 |
-
"</table><p>"
|
| 220 |
-
],
|
| 221 |
-
"text/plain": [
|
| 222 |
-
"<IPython.core.display.HTML object>"
|
| 223 |
-
]
|
| 224 |
-
},
|
| 225 |
-
"metadata": {},
|
| 226 |
-
"output_type": "display_data"
|
| 227 |
-
},
|
| 228 |
-
{
|
| 229 |
-
"ename": "KeyboardInterrupt",
|
| 230 |
-
"evalue": "",
|
| 231 |
-
"output_type": "error",
|
| 232 |
-
"traceback": [
|
| 233 |
-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
| 234 |
-
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
|
| 235 |
-
"Cell \u001b[0;32mIn[10], line 17\u001b[0m\n\u001b[1;32m 1\u001b[0m training_args \u001b[38;5;241m=\u001b[39m TrainingArguments(\n\u001b[1;32m 2\u001b[0m output_dir\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./kcmii_definition_ft_mps\u001b[39m\u001b[38;5;124m\"\u001b[39m, \n\u001b[1;32m 3\u001b[0m per_device_train_batch_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 8\u001b[0m use_mps_device\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m \n\u001b[1;32m 9\u001b[0m )\n\u001b[1;32m 11\u001b[0m trainer \u001b[38;5;241m=\u001b[39m Trainer(\n\u001b[1;32m 12\u001b[0m model\u001b[38;5;241m=\u001b[39mmodel,\n\u001b[1;32m 13\u001b[0m args\u001b[38;5;241m=\u001b[39mtraining_args,\n\u001b[1;32m 14\u001b[0m train_dataset\u001b[38;5;241m=\u001b[39mtokenized_dataset\n\u001b[1;32m 15\u001b[0m )\n\u001b[0;32m---> 17\u001b[0m \u001b[43mtrainer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 19\u001b[0m model\u001b[38;5;241m.\u001b[39msave_pretrained(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./kcmii_definition_ft_mps\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 20\u001b[0m tokenizer\u001b[38;5;241m.\u001b[39msave_pretrained(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./kcmii_definition_ft_mps\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
|
| 236 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/transformers/trainer.py:2245\u001b[0m, in \u001b[0;36mTrainer.train\u001b[0;34m(self, resume_from_checkpoint, trial, ignore_keys_for_eval, **kwargs)\u001b[0m\n\u001b[1;32m 2243\u001b[0m hf_hub_utils\u001b[38;5;241m.\u001b[39menable_progress_bars()\n\u001b[1;32m 2244\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 2245\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43minner_training_loop\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2246\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2247\u001b[0m \u001b[43m \u001b[49m\u001b[43mresume_from_checkpoint\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresume_from_checkpoint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2248\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrial\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrial\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2249\u001b[0m \u001b[43m \u001b[49m\u001b[43mignore_keys_for_eval\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_keys_for_eval\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2250\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n",
|
| 237 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/transformers/trainer.py:2611\u001b[0m, in \u001b[0;36mTrainer._inner_training_loop\u001b[0;34m(self, batch_size, args, resume_from_checkpoint, trial, ignore_keys_for_eval)\u001b[0m\n\u001b[1;32m 2607\u001b[0m grad_norm \u001b[38;5;241m=\u001b[39m _grad_norm\n\u001b[1;32m 2609\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontrol \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcallback_handler\u001b[38;5;241m.\u001b[39mon_pre_optimizer_step(args, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontrol)\n\u001b[0;32m-> 2611\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2613\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontrol \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcallback_handler\u001b[38;5;241m.\u001b[39mon_optimizer_step(args, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontrol)\n\u001b[1;32m 2615\u001b[0m \u001b[38;5;66;03m# get leaning rate before update\u001b[39;00m\n",
|
| 238 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/accelerate/optimizer.py:178\u001b[0m, in \u001b[0;36mAcceleratedOptimizer.step\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_accelerate_step_called \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 178\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m(\u001b[49m\u001b[43mclosure\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 179\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maccelerator_state\u001b[38;5;241m.\u001b[39mdistributed_type \u001b[38;5;241m==\u001b[39m DistributedType\u001b[38;5;241m.\u001b[39mXLA:\n\u001b[1;32m 180\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgradient_state\u001b[38;5;241m.\u001b[39mis_xla_gradients_synced \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n",
|
| 239 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:124\u001b[0m, in \u001b[0;36mLRScheduler.__init__.<locals>.patch_track_step_called.<locals>.wrap_step.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 122\u001b[0m opt \u001b[38;5;241m=\u001b[39m opt_ref()\n\u001b[1;32m 123\u001b[0m opt\u001b[38;5;241m.\u001b[39m_opt_called \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m \u001b[38;5;66;03m# type: ignore[union-attr]\u001b[39;00m\n\u001b[0;32m--> 124\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__get__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;18;43m__class__\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
| 240 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/optimizer.py:485\u001b[0m, in \u001b[0;36mOptimizer.profile_hook_step.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 480\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 481\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 482\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m must return None or a tuple of (new_args, new_kwargs), but got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresult\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 483\u001b[0m )\n\u001b[0;32m--> 485\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 486\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_optimizer_step_code()\n\u001b[1;32m 488\u001b[0m \u001b[38;5;66;03m# call optimizer step post hooks\u001b[39;00m\n",
|
| 241 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/optimizer.py:79\u001b[0m, in \u001b[0;36m_use_grad_for_differentiable.<locals>._use_grad\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 77\u001b[0m torch\u001b[38;5;241m.\u001b[39mset_grad_enabled(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdefaults[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdifferentiable\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 78\u001b[0m torch\u001b[38;5;241m.\u001b[39m_dynamo\u001b[38;5;241m.\u001b[39mgraph_break()\n\u001b[0;32m---> 79\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 81\u001b[0m torch\u001b[38;5;241m.\u001b[39m_dynamo\u001b[38;5;241m.\u001b[39mgraph_break()\n",
|
| 242 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/adam.py:246\u001b[0m, in \u001b[0;36mAdam.step\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 234\u001b[0m beta1, beta2 \u001b[38;5;241m=\u001b[39m group[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbetas\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 236\u001b[0m has_complex \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_init_group(\n\u001b[1;32m 237\u001b[0m group,\n\u001b[1;32m 238\u001b[0m params_with_grad,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 243\u001b[0m state_steps,\n\u001b[1;32m 244\u001b[0m )\n\u001b[0;32m--> 246\u001b[0m \u001b[43madam\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 247\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams_with_grad\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 248\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrads\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 249\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avgs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 250\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 251\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_exp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 252\u001b[0m \u001b[43m \u001b[49m\u001b[43mstate_steps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 253\u001b[0m \u001b[43m \u001b[49m\u001b[43mamsgrad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mamsgrad\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 254\u001b[0m \u001b[43m \u001b[49m\u001b[43mhas_complex\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhas_complex\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 255\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta1\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta1\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 256\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 257\u001b[0m \u001b[43m \u001b[49m\u001b[43mlr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mlr\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 258\u001b[0m \u001b[43m \u001b[49m\u001b[43mweight_decay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mweight_decay\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 259\u001b[0m \u001b[43m \u001b[49m\u001b[43meps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43meps\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 260\u001b[0m \u001b[43m \u001b[49m\u001b[43mmaximize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmaximize\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 261\u001b[0m \u001b[43m \u001b[49m\u001b[43mforeach\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mforeach\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 262\u001b[0m \u001b[43m \u001b[49m\u001b[43mcapturable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcapturable\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 263\u001b[0m \u001b[43m \u001b[49m\u001b[43mdifferentiable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdifferentiable\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 264\u001b[0m \u001b[43m \u001b[49m\u001b[43mfused\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfused\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 265\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_scale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgrad_scale\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 266\u001b[0m \u001b[43m \u001b[49m\u001b[43mfound_inf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfound_inf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 267\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecoupled_weight_decay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgroup\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdecoupled_weight_decay\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 268\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 270\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\n",
|
| 243 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/optimizer.py:147\u001b[0m, in \u001b[0;36m_disable_dynamo_if_unsupported.<locals>.wrapper.<locals>.maybe_fallback\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m disabled_func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 146\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 147\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
| 244 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/adam.py:933\u001b[0m, in \u001b[0;36madam\u001b[0;34m(params, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, foreach, capturable, differentiable, fused, grad_scale, found_inf, has_complex, decoupled_weight_decay, amsgrad, beta1, beta2, lr, weight_decay, eps, maximize)\u001b[0m\n\u001b[1;32m 930\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 931\u001b[0m func \u001b[38;5;241m=\u001b[39m _single_tensor_adam\n\u001b[0;32m--> 933\u001b[0m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 934\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 935\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrads\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 936\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avgs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 937\u001b[0m \u001b[43m \u001b[49m\u001b[43mexp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 938\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_exp_avg_sqs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 939\u001b[0m \u001b[43m \u001b[49m\u001b[43mstate_steps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 940\u001b[0m \u001b[43m \u001b[49m\u001b[43mamsgrad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mamsgrad\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 941\u001b[0m \u001b[43m \u001b[49m\u001b[43mhas_complex\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhas_complex\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 942\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta1\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta1\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43mbeta2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbeta2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mlr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mweight_decay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweight_decay\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43meps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43meps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43mmaximize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaximize\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[43m \u001b[49m\u001b[43mcapturable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcapturable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 949\u001b[0m \u001b[43m \u001b[49m\u001b[43mdifferentiable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdifferentiable\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 950\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_scale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgrad_scale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 951\u001b[0m \u001b[43m \u001b[49m\u001b[43mfound_inf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfound_inf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 952\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecoupled_weight_decay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdecoupled_weight_decay\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 953\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
|
| 245 |
-
"File \u001b[0;32m/opt/anaconda3/envs/report_error_detector/lib/python3.10/site-packages/torch/optim/adam.py:456\u001b[0m, in \u001b[0;36m_single_tensor_adam\u001b[0;34m(params, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, grad_scale, found_inf, amsgrad, has_complex, beta1, beta2, lr, weight_decay, eps, maximize, capturable, differentiable, decoupled_weight_decay)\u001b[0m\n\u001b[1;32m 454\u001b[0m exp_avg_sq\u001b[38;5;241m.\u001b[39mmul_(beta2)\u001b[38;5;241m.\u001b[39maddcmul_(grad, grad, value\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m-\u001b[39m beta2)\n\u001b[1;32m 455\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 456\u001b[0m \u001b[43mexp_avg_sq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmul_\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbeta2\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39maddcmul_(grad, grad, value\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m-\u001b[39m beta2)\n\u001b[1;32m 458\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m capturable \u001b[38;5;129;01mor\u001b[39;00m differentiable:\n\u001b[1;32m 459\u001b[0m step \u001b[38;5;241m=\u001b[39m step_t\n",
|
| 246 |
-
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
|
| 247 |
-
]
|
| 248 |
-
}
|
| 249 |
-
],
|
| 250 |
-
"source": [
|
| 251 |
-
"training_args = TrainingArguments(\n",
|
| 252 |
-
" output_dir=\"./kcmii_definition_ft_mps\", \n",
|
| 253 |
-
" per_device_train_batch_size=1, \n",
|
| 254 |
-
" num_train_epochs=5,\n",
|
| 255 |
-
" logging_steps=10,\n",
|
| 256 |
-
" save_strategy=\"epoch\",\n",
|
| 257 |
-
" optim=\"adamw_torch\",\n",
|
| 258 |
-
" use_mps_device=True \n",
|
| 259 |
-
")\n",
|
| 260 |
-
"\n",
|
| 261 |
-
"trainer = Trainer(\n",
|
| 262 |
-
" model=model,\n",
|
| 263 |
-
" args=training_args,\n",
|
| 264 |
-
" train_dataset=tokenized_dataset\n",
|
| 265 |
-
")\n",
|
| 266 |
-
"\n",
|
| 267 |
-
"trainer.train()\n",
|
| 268 |
-
"\n",
|
| 269 |
-
"model.save_pretrained(\"./kcmii_definition_ft_mps\")\n",
|
| 270 |
-
"tokenizer.save_pretrained(\"./kcmii_definition_ft_mps\")"
|
| 271 |
-
]
|
| 272 |
-
},
|
| 273 |
-
{
|
| 274 |
-
"cell_type": "markdown",
|
| 275 |
-
"id": "3771df36-b3a5-40d4-870b-3e182c6f4a36",
|
| 276 |
-
"metadata": {},
|
| 277 |
-
"source": [
|
| 278 |
-
"# 학습 시간이 너무 오래 걸림...."
|
| 279 |
-
]
|
| 280 |
-
},
|
| 281 |
-
{
|
| 282 |
-
"cell_type": "code",
|
| 283 |
-
"execution_count": null,
|
| 284 |
-
"id": "eb74a226-d7de-47cd-965c-b60b5872353c",
|
| 285 |
-
"metadata": {},
|
| 286 |
-
"outputs": [],
|
| 287 |
-
"source": []
|
| 288 |
-
}
|
| 289 |
-
],
|
| 290 |
-
"metadata": {
|
| 291 |
-
"kernelspec": {
|
| 292 |
-
"display_name": "Python 3 (ipykernel)",
|
| 293 |
-
"language": "python",
|
| 294 |
-
"name": "python3"
|
| 295 |
-
},
|
| 296 |
-
"language_info": {
|
| 297 |
-
"codemirror_mode": {
|
| 298 |
-
"name": "ipython",
|
| 299 |
-
"version": 3
|
| 300 |
-
},
|
| 301 |
-
"file_extension": ".py",
|
| 302 |
-
"mimetype": "text/x-python",
|
| 303 |
-
"name": "python",
|
| 304 |
-
"nbconvert_exporter": "python",
|
| 305 |
-
"pygments_lexer": "ipython3",
|
| 306 |
-
"version": "3.10.16"
|
| 307 |
-
}
|
| 308 |
-
},
|
| 309 |
-
"nbformat": 4,
|
| 310 |
-
"nbformat_minor": 5
|
| 311 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|