{"id":647982,"date":"2025-10-14T13:53:14","date_gmt":"2025-10-14T12:53:14","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=pycharm&#038;p=647982"},"modified":"2025-10-14T14:20:18","modified_gmt":"2025-10-14T13:20:18","slug":"fine-tuning-and-deploying-gpt-models-using-hugging-face-transformers","status":"publish","type":"pycharm","link":"https:\/\/blog.jetbrains.com\/ko\/pycharm\/2025\/10\/fine-tuning-and-deploying-gpt-models-using-hugging-face-transformers\/","title":{"rendered":"Hugging Face Transformers\ub97c \ud65c\uc6a9\ud55c GPT \ubaa8\ub378 \uc138\ubd80 \uc870\uc815 \ubc0f \ubc30\ud3ec"},"content":{"rendered":"<p>Hugging Face\ub294 \ud604\uc7ac \uba38\uc2e0\ub7ec\ub2dd \uc5f0\uad6c\uc790\uc640 \uc560\ud638\uac00\ub4e4\uc5d0\uac8c \ub110\ub9ac \uc54c\ub824\uc9c4 \uc774\ub984\uc785\ub2c8\ub2e4. Hugging Face\uc758 \uac00\uc7a5 \ud070 \uc131\uacf5 \uc0ac\ub840 \uc911 \ud558\ub098\uc778 <a href=\"https:\/\/huggingface.co\/docs\/transformers\/en\/index\" target=\"_blank\" rel=\"noopener\">Transformers<\/a>\ub294 \ud14d\uc2a4\ud2b8, \ucef4\ud4e8\ud130 \ube44\uc804, \uc624\ub514\uc624, \ube44\ub514\uc624 \ubd84\uc57c\uc758 \uba38\uc2e0\ub7ec\ub2dd \ubaa8\ub378\uc744 \uc815\uc758\ud558\ub294 \ud504\ub808\uc784\uc6cc\ud06c\uc785\ub2c8\ub2e4. <a href=\"https:\/\/huggingface.co\/models\" target=\"_blank\" rel=\"noopener\">Hugging Face Hub<\/a>\uc5d0 \ubc29\ub300\ud55c \ucca8\ub2e8 \uba38\uc2e0\ub7ec\ub2dd \ubaa8\ub378\uc774 \uc788\uace0, Transformers\uac00 \ub300\ubd80\ubd84\uc758 \ud2b8\ub808\uc774\ub2dd \ud504\ub808\uc784\uc6cc\ud06c\uc640 \ud638\ud658\ub418\uae30 \ub54c\ubb38\uc5d0 \ucd94\ub860\uacfc \ubaa8\ub378 \ud2b8\ub808\uc774\ub2dd\uc5d0 \ub110\ub9ac \ud65c\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">AI \ubaa8\ub378\uc744 \uc138\ubd80 \uc870\uc815\ud574\uc57c \ud558\ub294 \uc774\uc720<\/h2>\n<p>AI \ubaa8\ub378\uc744 \uc138\ubd80 \uc870\uc815\ud558\uba74 \ud2b9\uc815 \uc791\uc5c5\uacfc \ub370\uc774\ud130\uc138\ud2b8\uc5d0 \ub9de\uac8c \ubaa8\ub378\uc758 \uc131\ub2a5\uc744 \uc870\uc815\ud560 \uc218 \uc788\uc73c\uba70, \ubc94\uc6a9 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud560 \ub54c\ubcf4\ub2e4 \ub354 \ub192\uc740 \uc815\ud655\ub3c4\uc640 \ud6a8\uc728\uc131\uc744 \ub2ec\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0ac\uc804 \ud2b8\ub808\uc774\ub2dd\ub41c \ubaa8\ub378\uc744 \ud65c\uc6a9\ud574 \uc138\ubd80 \uc870\uc815\uc744 \uc218\ud589\ud558\uba74 \ucc98\uc74c\ubd80\ud130 \ud2b8\ub808\uc774\ub2dd\ud560 \ud544\uc694\uac00 \uc904\uc5b4\ub4e4\uc5b4 \uc2dc\uac04\uacfc \ub9ac\uc18c\uc2a4\ub97c \uc808\uc57d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ud2b9\uc815 \ub3c4\uba54\uc778\uc758 \uace0\uc720\ud55c \ud615\uc2dd, \ub258\uc559\uc2a4, \uc608\uc678\uc801\uc778 \uc0ac\ub840\ub97c \ub354 \uc798 \ucc98\ub9ac\ud560 \uc218 \uc788\uc5b4, \ub354 \uc2e0\ub8b0\uc131 \uc788\uace0 \ub9de\ucda4\ud654\ub41c \uacb0\uacfc\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \uc218\ud559 \ubb38\uc81c\ub97c \ub354 \uc798 \ucc98\ub9ac\ud560 \uc218 \uc788\ub3c4\ub85d GPT \ubaa8\ub378\uc744 \uc218\ud559\uc801 \ucd94\ub860 \ub370\uc774\ud130\ub85c \uc138\ubd80 \uc870\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Hugging Face \ubaa8\ub378 \uc0ac\uc6a9 \ubc29\ubc95<\/h2>\n<p>PyCharm\uc744 \uc0ac\uc6a9\ud558\uba74 Hugging Face\uc5d0\uc11c \uc6d0\ud558\ub294 \ubaa8\ub378\uc744 \uc190\uc27d\uac8c \ucc3e\uc544 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0c8 Python \ud30c\uc77c\uc5d0\uc11c \uc0c1\ub2e8\uc758 <em>Code(\ucf54\ub4dc)<\/em> \uba54\ub274\ub85c \uc774\ub3d9\ud55c \ud6c4 <em>Insert HF Model(HF \ubaa8\ub378 \uc0bd\uc785)<\/em>\uc744 \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594074\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-40.png\" alt=\"Hugging Face \ubaa8\ub378 \uc0ac\uc6a9 \ubc29\ubc95\" width=\"946\" height=\"1070\" \/><\/figure>\n<p>\uba54\ub274\uac00 \uc5f4\ub824 \uc788\ub294 \uc0c1\ud0dc\uc5d0\uc11c \uce74\ud14c\uace0\ub9ac\ubcc4\ub85c \ubaa8\ub378\uc744 \ud0d0\uc0c9\ud558\uac70\ub098 \uc0c1\ub2e8\uc758 \uac80\uc0c9\ucc3d\uc5d0 \uc9c1\uc811 \uc785\ub825\ud558\uc5ec \ubaa8\ub378\uc744 \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub378\uc744 \uc120\ud0dd\ud558\uba74 \uc624\ub978\ucabd\uc5d0 \uc124\uba85\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594085\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-41.png\" alt=\"Hugging Face \ubaa8\ub378 \ud0d0\uc0c9\" width=\"1600\" height=\"923\" \/><\/figure>\n<p><em>Use Model(\ubaa8\ub378 \uc0ac\uc6a9)<\/em>\uc744 \ud074\ub9ad\ud558\uba74 \ud30c\uc77c\uc5d0 \ucf54\ub4dc \uc2a4\ub2c8\ud3ab\uc774 \ucd94\uac00\ub429\ub2c8\ub2e4. \uc774\uc81c \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Hugging Face \ubaa8\ub378\uc744 \ubc14\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594096\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-42.png\" alt=\"PyCharm\uc5d0\uc11c Hugging Face \ubaa8\ub378 \uc0ac\uc6a9\" width=\"1600\" height=\"312\" \/><\/figure>\n<h2 class=\"wp-block-heading\">GPT(Generative Pre-Trained Transformer) \ubaa8\ub378<\/h2>\n<p>GPT \ubaa8\ub378\uc740 <a href=\"https:\/\/huggingface.co\/models\" target=\"_blank\" rel=\"noopener\">Hugging Face Hub<\/a>\uc5d0\uc11c \ub9e4\uc6b0 \uc778\uae30\uac00 \ub9ce\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0\ub370 \uacfc\uc5f0 \uc5b4\ub5a4 \ubaa8\ub378\uc778 \uac78\uae4c\uc694? GPT\ub294 \uc790\uc5f0\uc5b4\ub97c \uc774\ud574\ud558\uace0 \uace0\ud488\uc9c8\uc758 \ud14d\uc2a4\ud2b8\ub97c \uc0dd\uc131\ud558\ub3c4\ub85d \ud2b8\ub808\uc774\ub2dd\ub41c \ubaa8\ub378\uc785\ub2c8\ub2e4. \uc8fc\ub85c \ud14d\uc2a4\ud2b8 \ud568\uc758, \uc9c8\uc758 \uc751\ub2f5, \uc758\ubbf8 \uc720\uc0ac\ub3c4, \ubb38\uc11c \ubd84\ub958\uc640 \uad00\ub828\ub41c \uc791\uc5c5\uc5d0 \ud65c\uc6a9\ub429\ub2c8\ub2e4. \uac00\uc7a5 \uc720\uba85\ud55c \uc0ac\ub840\ub294 <a href=\"https:\/\/openai.com\/index\/chatgpt\/\" target=\"_blank\" rel=\"noopener\">OpenAI\uc5d0\uc11c \uac1c\ubc1c\ud55c ChatGPT<\/a>\uc785\ub2c8\ub2e4.<\/p>\n<p>OpenAI GPT \ubaa8\ub378\uc740 <a href=\"https:\/\/huggingface.co\/models\" target=\"_blank\" rel=\"noopener\">Hugging Face Hub<\/a>\uc5d0 \ub9ce\uc774 \uacf5\uac1c\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 \uc774\ub7ec\ud55c \ubaa8\ub378\uc744 Transformers\ub85c \ud65c\uc6a9\ud558\ub294 \ubc29\ubc95\uacfc \uc790\uccb4 \ub370\uc774\ud130\ub85c \uc138\ubd80 \uc870\uc815\ud558\ub294 \ubc29\ubc95, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4<em>.<\/em><\/p>\n<h2 class=\"wp-block-heading\">Transformers \uc0ac\uc6a9 \uc2dc \uc774\uc810<\/h2>\n<p>Transformers\ub294 Hugging Face\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ub2e4\ub978 \ub3c4\uad6c\uc640 \ud568\uaed8 \ubcf5\uc7a1\ud55c \ub525\ub7ec\ub2dd \ubaa8\ub378\uc744 \uc190\uc27d\uac8c \uc138\ubd80 \uc870\uc815\ud560 \uc218 \uc788\ub294 \ub192\uc740 \uc218\uc900\uc758 \ub3c4\uad6c\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \ud574\ub2f9 \ubaa8\ub378\uc758 \uc544\ud0a4\ud14d\ucc98\uc640 \ud1a0\ud070\ud654 \ubc29\uc2dd\uc744 \uc644\uc804\ud788 \uc774\ud574\ud558\uc9c0 \ubabb\ud574\ub3c4, \uc774\ub7ec\ud55c \ub3c4\uad6c\ub97c \ud1b5\ud574 \ubaa8\ub378\uc744 \ud638\ud658 \uac00\ub2a5\ud55c \ubaa8\ub4e0 \ud2b8\ub808\uc774\ub2dd \ub370\uc774\ud130\uc640 \ud568\uaed8 &#8216;\ud50c\ub7ec\uadf8 \uc564 \ud50c\ub808\uc774&#8217; \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud558\uba74\uc11c \ud1a0\ud070\ud654\uc640 \ud2b8\ub808\uc774\ub2dd\uc5d0\uc11c \ud3ed\ub113\uc740 \uc218\uc900\uc73c\ub85c \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Transformers\uc758 \uc791\ub3d9 \ubc29\uc2dd<\/h2>\n<p>Transformers\uc758 \uc791\ub3d9 \ubc29\uc2dd\uc744 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uae30 \uc704\ud574, \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec GPT \ubaa8\ub378\uacfc \uc0c1\ud638 \uc791\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3 class=\"wp-block-heading\">\ud30c\uc774\ud504\ub77c\uc778\uc73c\ub85c \uc0ac\uc804 \ud2b8\ub808\uc774\ub2dd\ub41c \ubaa8\ub378 \ucd94\ub860<\/h3>\n<p>OpenAI GPT-2 \ubaa8\ub378\uc744 \uc120\ud0dd\ud574 \ucf54\ub4dc\uc5d0 \ucd94\uac00\ud55c \ud6c4 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\ub97c \uc5bb\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from transformers import pipeline\n\n\npipe = pipeline(\"text-generation\", model=\"openai-community\/gpt2\")<\/pre>\n<p>\uc774\ub97c \uc0ac\uc6a9\ud558\uae30 \uc804\uc5d0 \uba87 \uac00\uc9c0 \uc900\ube44\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uba3c\uc800 \uba38\uc2e0\ub7ec\ub2dd \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774 \uc608\uc2dc\uc5d0\uc11c\ub294 <a href=\"https:\/\/pytorch.org\/get-started\/locally\/\" target=\"_blank\" rel=\"noopener\">PyTorch<\/a>\ub97c \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4. PyCharm\uc758 <em>Python Packages(Python \ud328\ud0a4\uc9c0)<\/em> \ucc3d\uc5d0\uc11c \uac04\ub2e8\ud788 \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594107\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-43.png\" alt=\"PyCharm\uc5d0\uc11c PyTorch \uc124\uce58\" width=\"920\" height=\"654\" \/><\/figure>\n<p>\uadf8 \ub2e4\uc74c &#8216;torch&#8217; \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec Transformers\ub97c \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc744 \uc0ac\uc6a9\ud574 \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc67c\ucabd\uc5d0 \uc788\ub294 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uac70\ub098 <em>\u2325 F12<\/em>(macOS) \ub610\ub294 <em>Alt + F12<\/em>(Windows) \ub2e8\ucd95\ud0a4\ub97c \uc0ac\uc6a9\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594118\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-44.png\" alt=\"PyCharm \ud130\ubbf8\ub110\uc5d0\uc11c Transformers \uc124\uce58\" width=\"838\" height=\"502\" \/><\/figure>\n<p>\uc5ec\uae30\uc11c\ub294 \ud130\ubbf8\ub110\uc5d0\uc11c uv\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\uc73c\ubbc0\ub85c \ub2e4\uc74c \uba85\ub839\uc5b4\ub85c \uc885\uc18d\uc131\uc744 \ucd94\uac00\ud558\uace0 \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">uv add \u201ctransformers[torch]\u201d\nuv sync<\/pre>\n<p>pip\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install \u201ctransformers[torch]\u201d<\/pre>\n<p>\ub610\ud55c \uc774\ud6c4\uc5d0 \ud544\uc694\ud560 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc778 python-dotenv, datasets<em>, <\/em>notebook<em>,<\/em> ipywidgets \ub4f1\ub3c4 \uc124\uce58\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \uc704\uc758 \ubc29\ubc95 \uc911 \ud558\ub098\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\uadf8 \ub2e4\uc74c\uc5d0\ub294 \ubaa8\ub378 \uc18d\ub3c4\ub97c \ub192\uc774\uae30 \uc704\ud574 GPU\ub97c \ucd94\uac00\ud558\ub294 \uac83\uc774 \uac00\uc7a5 \uc88b\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9 \uc911\uc778 \uc2dc\uc2a4\ud15c \ud658\uacbd\uc5d0 \ub530\ub77c pipeline\uc5d0\uc11c \uae30\uae30 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc124\uc815\ud558\uc5ec GPU\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc81c\uac00 \uc0ac\uc6a9\ud558\ub294 Mac M2 \ucef4\ud4e8\ud130\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">device=\"mps\"<\/code>\ub85c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pipe = pipeline(\"text-generation\", model=\"openai-community\/gpt2\", device=\"mps\")<\/pre>\n<p>CUDA GPU\uac00 \uc788\ub2e4\uba74 <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">device=\"cuda\"<\/code>\ub85c \uc124\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \ud30c\uc774\ud504\ub77c\uc778 \uc124\uc815\uc744 \ub9c8\ucce4\uc73c\ub2c8 \uac04\ub2e8\ud55c \ud504\ub86c\ud504\ud2b8\ub85c \uc2e4\ud589\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from transformers import pipeline\n\n\npipe = pipeline(\"text-generation\", model=\"openai-community\/gpt2\", device=\"mps\")\n\n\nprint(pipe(\"A rectangle has a perimeter of 20 cm. If the length is 6 cm, what is the width?\", max_new_tokens=200))<\/pre>\n<p>\uc0c1\ub2e8\uc758 <em>Run(\uc2e4\ud589)<\/em> \ubc84\ud2bc(<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXf6ZDm7vSGyFlO0DzXegK6WP9JxsStUiJA-bkRZ0mwPsUsmn8M70emV5Sr8f17-fEK6z9V1EQKWEm3RPHdT8n8uqG18faVmQn5y09psVInQLU0CZQKXAEg2q7m7AOsh4hPU7G8gcQ.png\" width=\"30\" height=\"23\" \/>)\uc744 \ub20c\ub7ec \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594129\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-45.png\" alt=\"PyCharm\uc5d0\uc11c \uc2a4\ud06c\ub9bd\ud2b8 \uc2e4\ud589\" width=\"1050\" height=\"282\" \/><\/figure>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[{'generated_text': 'A rectangle has a perimeter of 20 cm. If the length is 6 cm, what is the width?nnA rectangle has a perimeter of 20 cm. If the length is 6 cm, what is the width? A rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width? A rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width? A rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width?nnA rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width? A rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width? A rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width? A rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width?nnA rectangle has a perimeter of 20 cm. If the width is 6 cm, what is the width? A rectangle has a perimeter'}]<\/pre>\n<p>\uc5ec\uae30\uc5d0\ub294 \ucd94\ub860\uc774 \uac70\uc758 \uc5c6\uace0, \uc758\ubbf8 \uc5c6\ub294 \ubb38\uc7a5\ub9cc \ub098\uc5f4\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uacfc \uac19\uc740 \uacbd\uace0 \uba54\uc2dc\uc9c0\uac00 \ud45c\uc2dc\ub420 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.<\/pre>\n<p>\uc774\ub294 \uae30\ubcf8 \uc124\uc815\uc785\ub2c8\ub2e4. \uc544\ub798\uc640 \uac19\uc774 \uc218\ub3d9\uc73c\ub85c \ucd94\uac00\ud558\uba74 \uc774 \uacbd\uace0\ub97c \uc5c6\uc568 \uc218 \uc788\uc9c0\ub9cc, \uc9c0\uae08 \ub2e8\uacc4\uc5d0\uc11c\ub294 \ud06c\uac8c \uc2e0\uacbd \uc4f0\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">print(pipe(\"A rectangle has a perimeter of 20 cm. If the length is 6 cm, what is the width?\", max_new_tokens=200, pad_token_id=pipe.tokenizer.eos_token_id))<\/pre>\n<p>\uc774\uc81c GPT-2\uc758 \uae30\ubcf8 \ub3d9\uc791\uc744 \ud655\uc778\ud588\uc73c\ub2c8, \uc138\ubd80 \uc870\uc815\uc744 \ud1b5\ud574 \uc218\ud559\uc801 \ucd94\ub860 \uc131\ub2a5\uc744 \uac1c\uc120\ud560 \uc218 \uc788\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3 class=\"wp-block-heading\">Hugging Face Hub\uc5d0\uc11c \ub370\uc774\ud130\uc138\ud2b8 \ub85c\ub4dc \ubc0f \uc900\ube44<\/h3>\n<p>GPT \ubaa8\ub378\uc744 \ub2e4\ub8e8\uae30 \uc804\uc5d0 \uba3c\uc800 \ud2b8\ub808\uc774\ub2dd \ub370\uc774\ud130\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. Hugging Face Hub\uc5d0\uc11c \ub370\uc774\ud130\uc138\ud2b8\ub97c \uac00\uc838\uc624\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc544\uc9c1 \uacc4\uc815\uc774 \uc5c6\ub2e4\uba74, Hugging Face \uacc4\uc815\uc744 \ub9cc\ub4e4\uace0 <a href=\"https:\/\/huggingface.co\/docs\/hub\/security-tokens#user-access-tokens\" target=\"_blank\" rel=\"noopener\">access token<\/a>\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc9c0\uae08\uc740 `read` \ud1a0\ud070\ub9cc \uc788\uc5b4\ub3c4 \ucda9\ubd84\ud569\ub2c8\ub2e4. \ud1a0\ud070\uc744 `.env` \ud30c\uc77c\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">HF_TOKEN=your-hugging-face-access-token<\/pre>\n<p>\uc774\ubc88\uc5d0\ub294 <a href=\"https:\/\/huggingface.co\/datasets\/Cheukting\/math-meta-reasoning-cleaned\" target=\"_blank\" rel=\"noopener\">Math Reasoning Dataset<\/a>\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \ub370\uc774\ud130\uc138\ud2b8\uc5d0\ub294 \uc218\ud559\uc801 \ucd94\ub860\uc774 \ud3ec\ud568\ub41c \ud14d\uc2a4\ud2b8\uac00 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ub370\uc774\ud130\uc138\ud2b8\ub85c GPT \ubaa8\ub378\uc744 \uc138\ubd80 \uc870\uc815\ud558\uc5ec \uc218\ud559 \ubb38\uc81c\ub97c \ub354 \ud6a8\uacfc\uc801\uc73c\ub85c \ud480\uc5b4\ub0bc \uc218 \uc788\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc0c8 Jupyter Notebook\uc744 \ub9cc\ub4e4\uc5b4 \uc138\ubd80 \uc870\uc815\uc5d0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc11c\ub85c \ub2e4\ub978 \ucf54\ub4dc \uc2a4\ub2c8\ud3ab\uc744 \ud558\ub098\uc529 \uc2e4\ud589\ud558\uace0 \uc9c4\ud589 \uc0c1\ud669\uc744 \ubaa8\ub2c8\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uccab \ubc88\uc9f8 \uc140\uc5d0\uc11c\ub294 Hugging Face Hub\uc5d0\uc11c \ub370\uc774\ud130\uc138\ud2b8\ub97c \ub85c\ub4dc\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from datasets import load_dataset\nfrom dotenv import load_dotenv\nimport os\n\n\nload_dotenv()\ndataset = load_dataset(\"Cheukting\/math-meta-reasoning-cleaned\", token=os.getenv(\"HF_TOKEN\"))\ndataset<\/pre>\n<p>\uc774 \uc140\uc744 \uc2e4\ud589\ud558\uba74(\uc778\ud130\ub137 \uc18d\ub3c4\uc5d0 \ub530\ub77c \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc74c) \ub370\uc774\ud130\uc138\ud2b8\uac00 \ub2e4\uc6b4\ub85c\ub4dc\ub429\ub2c8\ub2e4. \ub2e4\uc6b4\ub85c\ub4dc\uac00 \uc644\ub8cc\ub418\uba74 \uacb0\uacfc\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DatasetDict({\n    train: Dataset({\n        features: ['id', 'text', 'token_count'],\n        num_rows: 987485\n    })\n})\n<\/pre>\n<p>\ub370\uc774\ud130\uac00 \uad81\uae08\ud558\ub2e4\uba74 PyCharm\uc5d0\uc11c \ud655\uc778\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ub978\ucabd\uc5d0 \uc788\ub294 \ubc84\ud2bc\uc744 \uc0ac\uc6a9\ud574 <em>Jupyter Variables(Jupyter \ubcc0\uc218)<\/em> \ucc3d\uc744 \uc5fd\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594140\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-46.png\" alt=\"PyCharm\uc5d0\uc11c Jupyter Variables \uc5f4\uae30\" width=\"1052\" height=\"740\" \/><\/figure>\n<p><em>dataset<\/em>\uc744 \ud655\uc7a5\ud558\uba74 <em>dataset[&#8216;train&#8217;]<\/em> \uc606\uc5d0 <em>View as DataFrame(DataFrame\uc73c\ub85c \ubcf4\uae30)<\/em> \uc635\uc158\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594152\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-47.png\" alt=\"PyCharm\uc758 Jupyter Variables\" width=\"980\" height=\"882\" \/><\/figure>\n<p>\uc774\ub97c \ud074\ub9ad\ud558\uba74 <em>Data View(\ub370\uc774\ud130 \ubdf0)<\/em> \ub3c4\uad6c \ucc3d\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594163\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-48.png\" alt=\"PyCharm\uc758 Data View \ub3c4\uad6c\" width=\"980\" height=\"1102\" \/><\/figure>\n<p>\uc774\uc81c \ub370\uc774\ud130\uc138\ud2b8\uc758 \ud14d\uc2a4\ud2b8\ub97c \ud1a0\ud070\ud654\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from transformers import GPT2Tokenizer\n\n\ntokenizer = GPT2Tokenizer.from_pretrained(\"openai-community\/gpt2\")\ntokenizer.pad_token = tokenizer.eos_token\n\n\ndef tokenize_function(examples):\n   return tokenizer(examples['text'], truncation=True, padding='max_length', max_length=512)\n\n\ntokenized_datasets = dataset.map(tokenize_function, batched=True)<\/pre>\n<p>\uc5ec\uae30\uc11c\ub294 GPT-2 \ud1a0\ud070\ud654 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uc5ec pad_token\uc744 eos_token(\uc904 \ub05d\uc744 \ub098\ud0c0\ub0b4\ub294 \ud1a0\ud070)\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4. \uc774\ud6c4\uc5d0\ub294 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud14d\uc2a4\ud2b8\ub97c \ud1a0\ud070\ud654\ud569\ub2c8\ub2e4. \ucc98\uc74c \uc2e4\ud589\ud560 \ub54c\ub294 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc9c0\ub9cc, \ud55c \ubc88 \uce90\uc2dc \ucc98\ub9ac\ub418\uba74 \uc774\ud6c4 \uac19\uc740 \uc140\uc744 \ub2e4\uc2dc \uc2e4\ud589\ud560 \uacbd\uc6b0 \ub354 \ube68\ub77c\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ub370\uc774\ud130\uc138\ud2b8\ub294 \ud2b8\ub808\uc774\ub2dd\uc6a9\uc73c\ub85c \uc57d 100\ub9cc \uac1c\uc758 \ud589\uc744 \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \ub370\uc774\ud130\ub97c \ubaa8\ub450 \ucc98\ub9ac\ud560 \ucda9\ubd84\ud55c \ucef4\ud4e8\ud305 \uc131\ub2a5\uc774 \uc788\ub2e4\uba74, \ubaa8\ub450 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774 \ub370\ubaa8\uc5d0\uc11c\ub294 \ub178\ud2b8\ubd81\uc5d0\uc11c \ub85c\uceec\ub85c \ud2b8\ub808\uc774\ub2dd\uc744 \uc2e4\ud589\ud558\uace0 \uc788\uc73c\ubbc0\ub85c \uc870\uae08\ub9cc \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">tokenized_datasets_split = tokenized_datasets[\"train\"].shard(num_shards=100, index=0).train_test_split(test_size=0.2, shuffle=True)\ntokenized_datasets_split<\/pre>\n<p>\uc5ec\uae30\uc11c\ub294 \ub370\uc774\ud130\uc758 1%\ub9cc \uc0ac\uc6a9\ud558\uace0, <code>train_test_split<\/code> \uc744 \uc2e4\ud589\ud558\uc5ec \ub370\uc774\ud130\uc138\ud2b8\ub97c \ub450 \ubd80\ubd84\uc73c\ub85c \ub098\ub215\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DatasetDict({\n    train: Dataset({\n        features: ['id', 'text', 'token_count', 'input_ids', 'attention_mask'],\n        num_rows: 7900\n    })\n    test: Dataset({\n        features: ['id', 'text', 'token_count', 'input_ids', 'attention_mask'],\n        num_rows: 1975\n    })\n})\n<\/pre>\n<p>\uc774\uc81c GPT-2 \ubaa8\ub378\uc744 \uc138\ubd80 \uc870\uc815\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<h3 class=\"wp-block-heading\">GPT \ubaa8\ub378 \uc138\ubd80 \uc870\uc815<\/h3>\n<p>\ub2e4\uc74c \ube48 \uc140\uc5d0\uc11c \ud2b8\ub808\uc774\ub2dd \uc778\uc218\ub97c \uc124\uc815\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from transformers import TrainingArguments\ntraining_args = TrainingArguments(\n   output_dir='.\/results',\n   num_train_epochs=5,\n   per_device_train_batch_size=8,\n   per_device_eval_batch_size=8,\n   warmup_steps=100,\n   weight_decay=0.01,\n   save_steps = 500,\n   logging_steps=100,\n   dataloader_pin_memory=False\n)<\/pre>\n<p>\uc774\ub7ec\ud55c \uc778\uc218 \uc911 \ub300\ubd80\ubd84\uc740 \ubaa8\ub378 \uc138\ubd80 \uc870\uc815\uc5d0\uc11c \ud45c\uc900\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uac12\uc785\ub2c8\ub2e4. \ub2e4\ub9cc \uc0ac\uc6a9\ud558\ub294 \ucef4\ud4e8\ud130 \ud658\uacbd\uc5d0 \ub530\ub77c \uba87 \uac00\uc9c0\ub97c \uc870\uc815\ud560 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ubc30\uce58 \ud06c\uae30 \u2013 \ucd5c\uc801\uc758 \ubc30\uce58 \ud06c\uae30\ub97c \ucc3e\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. \ubc30\uce58 \ud06c\uae30\uac00 \ud074\uc218\ub85d \ud2b8\ub808\uc774\ub2dd \uc18d\ub3c4\uac00 \ube68\ub77c\uc9d1\ub2c8\ub2e4. \uadf8\ub7ec\ub098 CPU\ub098 GPU \uba54\ubaa8\ub9ac\uc5d0\ub294 \ud55c\uacc4\uac00 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc77c\uc815 \uc218\uc900 \uc774\uc0c1\uc740 \ubd88\uac00\ub2a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\uc5d0\ud3ec\ud06c \u2013 \uc5d0\ud3ec\ud06c \uc218\uac00 \ub9ce\uc544\uc9c8\uc218\ub85d \ud2b8\ub808\uc774\ub2dd \uc2dc\uac04\uc774 \uae38\uc5b4\uc9d1\ub2c8\ub2e4. \ud544\uc694\ud55c \uc5d0\ud3ec\ud06c \uc218\ub294 \uc9c1\uc811 \uacb0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\uc800\uc7a5 \ub2e8\uacc4 \u2013 \uc800\uc7a5 \ub2e8\uacc4\ub97c \uc124\uc815\ud558\uba74 \uccb4\ud06c\ud3ec\uc778\ud2b8\uac00 \ub514\uc2a4\ud06c\uc5d0 \uc800\uc7a5\ub418\ub294 \uc8fc\uae30\uac00 \uacb0\uc815\ub429\ub2c8\ub2e4. \ud2b8\ub808\uc774\ub2dd\uc774 \ub290\ub9ac\uace0, \uc911\uac04\uc5d0 \uc608\uae30\uce58 \uc54a\uac8c \uba48\ucd9c \uc218 \uc788\ub2e4\uba74 \ub354 \uc790\uc8fc \uc800\uc7a5\ud558\ub3c4\ub85d \uc124\uc815\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4(\ub354 \ub0ae\uc740 \uac12\uc73c\ub85c \uc124\uc815).<\/li>\n<\/ul>\n<p>\uc124\uc815\uc744 \ub9c8\uce5c \ud6c4, \ub2e4\uc74c \uc140\uc5d0\uc11c \ud2b8\ub808\uc774\ub108\ub97c \uad6c\uc131\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from transformers import Trainer, DataCollatorForLanguageModeling\n\n\nmodel = GPT2LMHeadModel.from_pretrained(\"openai-community\/gpt2\")\ndata_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)\n\n\ntrainer = Trainer(\n   model=model,\n   args=training_args,\n   train_dataset=tokenized_datasets_split['train'],\n   eval_dataset=tokenized_datasets_split['test'],\n   data_collator=data_collator,\n)\n\n\ntrainer.train(resume_from_checkpoint=False)<\/pre>\n<p>\uc5ec\uae30\uc11c\ub294 `resume_from_checkpoint=False`\ub85c \uc124\uc815\ud588\uc9c0\ub9cc, \ud2b8\ub808\uc774\ub2dd\uc774 \uc911\ub2e8\ub418\uc5c8\uc744 \ub54c \ub9c8\uc9c0\ub9c9 \uccb4\ud06c\ud3ec\uc778\ud2b8\uc5d0\uc11c \uc774\uc5b4\uc11c \uc9c4\ud589\ud558\ub824\uba74 `True`\ub85c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud2b8\ub808\uc774\ub2dd\uc774 \ub05d\ub098\uba74 \ubaa8\ub378\uc744 \ud3c9\uac00\ud558\uace0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">trainer.evaluate(tokenized_datasets_split['test'])\ntrainer.save_model(\".\/trained_model\")<\/pre>\n<p>\uc774\uc81c \ud2b8\ub808\uc774\ub2dd\ub41c \ubaa8\ub378\uc744 \ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc0ac\uc804 \ud2b8\ub808\uc774\ub2dd\ub41c \ubaa8\ub378\uacfc \ud568\uaed8 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uc0ac\uc6a9\ud588\ub358 `model.py`\ub85c \ub3cc\uc544\uac00 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from transformers import pipeline\n\n\npipe = pipeline(\"text-generation\", model=\"openai-community\/gpt2\", device=\"mps\")\n\n\nprint(pipe(\"A rectangle has a perimeter of 20 cm. If the length is 6 cm, what is the width?\", max_new_tokens=200, pad_token_id=pipe.tokenizer.eos_token_id))<\/pre>\n<p>\uc774\uc81c `model=&#8221;openai-community\/gpt2&#8243;`\ub97c `model=&#8221;.\/trained_model&#8221;`\ub85c \ubcc0\uacbd\ud558\uace0 \uc5b4\ub5a4 \uacb0\uacfc\uac00 \ub098\uc624\ub294\uc9c0 \ud655\uc778\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[{'generated_text': \"A rectangle has a perimeter of 20 cm. If the length is 6 cm, what is the width?nAlright, let me try to solve this problem as a student, and I'll let my thinking naturally fall into the common pitfall as described.nn---nn**Step 1: Attempting the Problem (falling into the pitfall)**nnWe have a rectangle with perimeter 20 cm. The length is 6 cm. We want the width.nnFirst, I need to find the area under the rectangle.nnLet\u2019s set ( A = 20 - 12 ), where ( A ) is the perimeter.nn**Area under a rectangle:**  n[nA = (20-12)^2 + ((-12)^2)^2 = 20^2 + 12^2 = 24n]nnSo, ( 24 = (20-12)^2 = 27 ).nnNow, I\u2019ll just divide both sides by 6 to find the area under the rectangle.n\"}]<\/pre>\n<p>\uc544\uc27d\uac8c\ub3c4 \uc544\uc9c1 \ubb38\uc81c\ub97c \uc644\uc804\ud788 \ud574\uacb0\ud558\uc9c0\ub294 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\uc804\uc5d0\ub294 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc558\ub358 \uba87 \uac00\uc9c0 \uc218\ud559\uc801 \uacf5\uc2dd\uacfc \ucd94\ub860\uc744 \uc0c8\ub85c \uc81c\uc2dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud544\uc694\ud558\uba74 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc740 \ub370\uc774\ud130\ub97c \ud65c\uc6a9\ud574 \ubaa8\ub378\uc744 \uc870\uae08 \ub354 \uc138\ubd80 \uc870\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 Hugging Face\uc640 FastAPI\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud574 \uc138\ubd80 \uc870\uc815\ub41c \ubaa8\ub378\uc744 API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">\uc138\ubd80 \uc870\uc815\ub41c \ubaa8\ub378 \ubc30\ud3ec<\/h2>\n<p>\uc11c\ubc84 \ubc31\uc5d4\ub4dc\uc5d0 \ubaa8\ub378\uc744 \ubc30\ud3ec\ud558\ub294 \uac00\uc7a5 \uc26c\uc6b4 \ubc29\ubc95\uc740 FastAPI\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\uc804\uc5d0 FastAPI\ub85c \uba38\uc2e0\ub7ec\ub2dd \ubaa8\ub378\uc744 \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2024\/09\/how-to-use-fastapi-for-machine-learning\/\">\ube14\ub85c\uadf8 \uac8c\uc2dc\uae00<\/a>\uc744 \uc791\uc131\ud55c \uc801\uc774 \uc788\ub294\ub370\uc694. \uc774\ubc88\uc5d0\ub294 \uadf8\ub9cc\ud07c \uc790\uc138\ud788 \ub2e4\ub8e8\uc9c0\ub294 \uc54a\uc9c0\ub9cc, \uc138\ubd80 \uc870\uc815\ub41c \ubaa8\ub378\uc744 \uc5b4\ub5bb\uac8c \ubc30\ud3ec\ud558\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.jetbrains.com\/ko-kr\/junie\/\" target=\"_blank\" rel=\"noopener\">Junie<\/a>\ub97c \uc0ac\uc6a9\ud574 \uba87 \uac00\uc9c0 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ub9cc\ub4e4\uc5c8\uc73c\uba70, <a href=\"https:\/\/github.com\/Cheukting\/fine-tune-gpt2\/tree\/main\/app\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0ac\uc6a9\ud558\uba74 FastAPI \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uac00 \uc788\ub294 \uc11c\ubc84 \ubc31\uc5d4\ub4dc\ub97c \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucd94\uac00\ud574\uc57c \ud560 \uc0c8\ub85c\uc6b4 \uc885\uc18d\uc131\ub3c4 \uc77c\ubd80 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">uv add fastapi pydantic uvicorn\nuv sync<\/pre>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c `main.py` \uc548\uc5d0 \uc788\ub294 \uc2a4\ud06c\ub9bd\ud2b8\uc758 \uc8fc\uc694 \ud3ec\uc778\ud2b8\ub97c \ud655\uc778\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Initialize FastAPI app\napp = FastAPI(\n   title=\"Text Generation API\",\n   description=\"API for generating text using a fine-tuned model\",\n   version=\"1.0.0\"\n)\n\n\n# Initialize the model pipeline\ntry:\n   pipe = pipeline(\"text-generation\", model=\"..\/trained_model\", device=\"mps\")\nexcept Exception as e:\n   # Fallback to CPU if MPS is not available\n   try:\n       pipe = pipeline(\"text-generation\", model=\"..\/trained_model\", device=\"cpu\")\n   except Exception as e:\n       print(f\"Error loading model: {e}\")\n       pipe = None<\/pre>\n<p>\uc571\uc744 \ucd08\uae30\ud654\ud558\uba74 \uc2a4\ud06c\ub9bd\ud2b8\ub294 \ubaa8\ub378\uc744 \ud30c\uc774\ud504\ub77c\uc778\uc5d0 \ubd88\ub7ec\uc624\ub824\uace0 \uc2dc\ub3c4\ud569\ub2c8\ub2e4. Metal GPU\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0, CPU\ub85c \ub300\uccb4\ud558\uc5ec \uc2e4\ud589\ub429\ub2c8\ub2e4. Metal GPU \ub300\uc2e0 CUDA GPU\uac00 \uc788\ub2e4\uba74 `mps`\ub97c `cuda`\ub85c \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Request model\nclass TextGenerationRequest(BaseModel):\n   prompt: str\n   max_new_tokens: int = 200\n  \n# Response model\nclass TextGenerationResponse(BaseModel):\n   generated_text: str<\/pre>\n<p>\ub450 \uac1c\uc758 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\uac00 \uc0dd\uc131\ub418\uba70, \uc774\ub294 Pydantic\uc758 <em>`BaseModel`<\/em>\uc744 \uc0c1\uc18d\ud569\ub2c8\ub2e4.<\/p>\n<p><em>Endpoints(\uc5d4\ub4dc\ud3ec\uc778\ud2b8)<\/em> \ub3c4\uad6c \ucc3d\uc5d0\uc11c \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ud655\uc778\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. 11\ubc88\uc9f8 \uc904\uc758 `app = FastAPI` \uc606 \uc9c0\uad6c\ubcf8 \uc544\uc774\ucf58\uc744 \ud074\ub9ad\ud558\uace0 <em>Show All Endpoints(\ubaa8\ub4e0 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \ud45c\uc2dc)<\/em>\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594174\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-49.png\" alt=\"PyCharm\uc5d0\uc11c \ubaa8\ub4e0 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \ud45c\uc2dc\" width=\"1600\" height=\"833\" \/><\/figure>\n<p>\uc138 \uac1c\uc758 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ub8e8\ud2b8 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \ub2e8\uc21c\ud55c \ud658\uc601 \uba54\uc2dc\uc9c0\uc774\ubbc0\ub85c \ub098\uba38\uc9c0 \ub450 \uac00\uc9c0\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@app.post(\"\/generate\", response_model=TextGenerationResponse)\nasync def generate_text(request: TextGenerationRequest):\n   \"\"\"\n   Generate text based on the provided prompt.\n  \n   Args:\n       request: TextGenerationRequest containing the prompt and generation parameters\n      \n   Returns:\n       TextGenerationResponse with the generated text\n   \"\"\"\n   if pipe is None:\n       raise HTTPException(status_code=500, detail=\"Model not loaded properly\")\n  \n   try:\n       result = pipe(\n           request.prompt,\n           max_new_tokens=request.max_new_tokens,\n           pad_token_id=pipe.tokenizer.eos_token_id\n       )\n      \n       # Extract the generated text from the result\n       generated_text = result[0]['generated_text']\n      \n       return TextGenerationResponse(generated_text=generated_text)\n   except Exception as e:\n       raise HTTPException(status_code=500, detail=f\"Error generating text: {str(e)}\")\n<\/pre>\n<p>`\/generate` \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \uc694\uccad \ud504\ub86c\ud504\ud2b8\ub97c \ubc1b\uc544 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud574 \uc751\ub2f5 \ud14d\uc2a4\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@app.get(\"\/health\")\nasync def health_check():\n   \"\"\"Check if the API and model are working properly.\"\"\"\n   if pipe is None:\n       raise HTTPException(status_code=500, detail=\"Model not loaded\")\n   return {\"status\": \"healthy\", \"model_loaded\": True}<\/pre>\n<p>`\/health` \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \ubaa8\ub378\uc774 \uc62c\ubc14\ub974\uac8c \ub85c\ub4dc\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4. \ud074\ub77c\uc774\uc5b8\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 UI\uc5d0\uc11c \ub2e4\ub978 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ud65c\uc131\ud654\ud558\uae30 \uc804\uc5d0 \uc774\ub97c \ud655\uc778\ud574\uc57c \ud560 \uacbd\uc6b0 \uc720\uc6a9\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>`run.py`\uc5d0\uc11c\ub294 <a href=\"https:\/\/www.uvicorn.org\/\" target=\"_blank\" rel=\"noopener\">uvicorn<\/a>\uc744 \uc0ac\uc6a9\ud574 \uc11c\ubc84\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import uvicorn\n\n\nif __name__ == \"__main__\":\n   uvicorn.run(\"main:app\", host=\"0.0.0.0\", port=8000, reload=True)<\/pre>\n<p>\uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc2e4\ud589\ud558\uba74 \uc11c\ubc84\uac00 <a href=\"http:\/\/0.0.0.0:8000\/\" target=\"_blank\" rel=\"noopener\">http:\/\/0.0.0.0:8000\/<\/a>\uc5d0\uc11c \uc2dc\uc791\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc11c\ubc84\ub97c \uc2e4\ud589\ud55c \ud6c4\uc5d0\ub294 <a href=\"http:\/\/0.0.0.0:8000\/docs\" target=\"_blank\" rel=\"noopener\">http:\/\/0.0.0.0:8000\/docs\/<\/a>\ub85c \uc774\ub3d9\ud574 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXf6PXwz_Vz7VEQoyZs20NJ9TsO36oWJPf0w4iMjwHZ_EBP1Pk9c_8aWR2ybGE-wsmArM1zAQl1s8jHEr09I0g1A3boGD1Kt4i4CemufHZTHnATjIWrJ8x2ZUYg4Q7E4b3tc2XDmmg.png\" width=\"624\" height=\"269\" \/><\/h2>\n<p>`\/generate` \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub85c \uc774\ub97c \uc2dc\ub3c4\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"prompt\": \"5 people give each other a present. How many presents are given altogether?\",\n  \"max_new_tokens\": 300\n}<\/pre>\n<p>\uc5bb\uc740 \uc751\ub2f5\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"generated_text\": \"5 people give each other a present. How many presents are given altogether?nAlright, let's try to solve the problem:nn**Problem**  n1. Each person gives each other a present. How many presents are given altogether?n2. How many \"gift\" are given altogether?nn**Common pitfall**  nAssuming that each present is a \"gift\" without considering the implications of the original condition.nn---nn### Step 1: Attempting the problem (falling into the pitfall)nnOkay, so I have two people giving each other a present, and I want to know how many are present. I remember that there are three types of gifts\u2014gifts, gins, and ginses.nnLet me try to count how many of these:nn- Gifts: Let\u2019s say there are three people giving each other a present.n- Gins: Let\u2019s say there are three people giving each other a present.n- Ginses: Let\u2019s say there are three people giving each other a present.nnSo, total gins and ginses would be:nn- Gins: ( 2 times 3 = 1 ), ( 2 times 1 = 2 ), ( 1 times 1 = 1 ), ( 1 times 2 = 2 ), so ( 2 times 3 = 4 ).n- Ginses: ( 2 times 3 = 6 ), (\"\n}\n<\/pre>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-594185\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-50.png\" alt=\"\" width=\"1600\" height=\"873\" \/><\/figure>\n<p>\ub2e4\ub978 \uc694\uccad\ub3c4 \uc790\uc720\ub86d\uac8c \uc2dc\ub3c4\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">\uacb0\ub860 \ubc0f \ub2e4\uc74c \ub2e8\uacc4<\/h2>\n<p>\uc774\uc81c GPT-2\uc640 \uac19\uc740 LLM(\ub300\uaddc\ubaa8 \uc5b8\uc5b4 \ubaa8\ub378)\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud559\uc801 \ucd94\ub860 \ub370\uc774\ud130\uc138\ud2b8\ub85c \uc138\ubd80 \uc870\uc815\ud558\uace0 FastAPI\ub85c \ubc30\ud3ec\ud588\uc73c\ubbc0\ub85c, Hugging Face Hub\uc5d0 \uacf5\uac1c\ub41c \ub354 \ub9ce\uc740 \uc624\ud508 \uc18c\uc2a4 LLM\uc744 \uc138\ubd80 \uc870\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ud508 \uc18c\uc2a4 \ub370\uc774\ud130\ub098 \ubcf8\uc778\uc758 \ub370\uc774\ud130\uc138\ud2b8\ub97c \uc0ac\uc6a9\ud574 \ub2e4\ub978 LLM \ubaa8\ub378\uc744 \uc138\ubd80 \uc870\uc815\ud574 \ubcf4\ub294 \uac83\ub3c4 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc6d0\ud55c\ub2e4\uba74 (\uc6d0\ubcf8 \ubaa8\ub378\uc758 \ub77c\uc774\uc120\uc2a4\uac00 \ud5c8\uc6a9\ud558\ub294 \ubc94\uc704 \ub0b4\uc5d0\uc11c) \uc138\ubd80 \uc870\uc815\ud55c \ubaa8\ub378\uc744 Hugging Face Hub\uc5d0 \uc5c5\ub85c\ub4dc\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc218\ud589\ud558\ub294 \ubc29\ubc95\uc740 Hugging Face Hub\uc758 <a href=\"https:\/\/huggingface.co\/docs\/transformers\/v4.53.3\/en\/main_classes\/trainer#transformers.Trainer.push_to_hub\" target=\"_blank\" rel=\"noopener\">\ubb38\uc11c<\/a>\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Hugging Face Hub\uc758 \ub9ac\uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud558\uac70\ub098 \ubaa8\ub378\uc744 \uc138\ubd80 \uc870\uc815\ud560 \ub54c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uac15\uc870\ud560 \uc810\uc740 \uc0ac\uc6a9\ud558\ub294 \ubaa8\ub4e0 \ubaa8\ub378\uc774\ub098 \ub370\uc774\ud130\uc138\ud2b8\uc758 \ub77c\uc774\uc120\uc2a4\ub97c \uc77d\uc5b4 \ud574\ub2f9 \ub9ac\uc18c\uc2a4\ub97c \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \uc870\uac74\uc744 \uc54c\uc544\uc57c \ud55c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \uc0c1\uc5c5\uc801 \uc0ac\uc6a9\uc774 \ud5c8\uc6a9\ub418\ub294\uc9c0, \uc0ac\uc6a9\ud55c \ub9ac\uc18c\uc2a4\uc758 \ucd9c\ucc98\ub97c \uba85\uc2dc\ud574\uc57c \ud558\ub294\uc9c0 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc55e\uc73c\ub85c \ube14\ub85c\uadf8 \uac8c\uc2dc\uae00\uc744 \ud1b5\ud574 Python, AI, \uba38\uc2e0\ub7ec\ub2dd, \ub370\uc774\ud130 \uc2dc\uac01\ud654\ub97c \ud3ec\ud568\ud55c \ub354 \ub9ce\uc740 \ucf54\ub4dc \uc608\uc2dc\ub97c \uacc4\uc18d \ud0d0\uad6c\ud560 \uc608\uc815\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc81c \uc0dd\uac01\uc5d0 <a href=\"https:\/\/www.jetbrains.com\/ko-kr\/pycharm\/\" target=\"_blank\" rel=\"noopener\">PyCharm<\/a>\uc740 \uc18d\ub3c4\uc640 \uc815\ud655\uc131 \ubaa8\ub450\uc5d0\uc11c \uc5c5\uacc4 \ucd5c\uace0 \uc218\uc900\uc758 Python \uc9c0\uc6d0\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uac00\uc7a5 \uc2a4\ub9c8\ud2b8\ud55c \ucf54\ub4dc \uc644\uc131 \uae30\ub2a5, PEP 8 \uaddc\uc815 \uc900\uc218 \uac80\uc0ac, \uc9c0\ub2a5\ud615 \ub9ac\ud329\ud130\ub9c1, \ub2e4\uc591\ud55c \uac80\uc0ac\ub97c \ud65c\uc6a9\ud574 \ubaa8\ub4e0 \ucf54\ub529 \uc694\uad6c \uc0ac\ud56d\uc744 \ucda9\uc871\ud574 \ubcf4\uc138\uc694. \uc774 \uae00\uc5d0\uc11c \uc0b4\ud3b4\ubcf8 \uac83\ucc98\ub7fc PyCharm\uc740 Hugging Face Hub\uc640\uc758 \ud1b5\ud569 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uc5ec IDE\ub97c \ubc97\uc5b4\ub098\uc9c0 \uc54a\uace0\ub3c4 \ubaa8\ub378\uc744 \ucc3e\uc544\ubcf4\uace0 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc774 \ubc14\ub85c PyCharm\uc774 \ub2e4\uc591\ud55c AI \ubc0f LLM(\ub300\uaddc\ubaa8 \uc5b8\uc5b4 \ubaa8\ub378) \uc138\ubd80 \uc870\uc815 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\ud569\ud55c \uc774\uc720\uc785\ub2c8\ub2e4.<\/p>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/www.jetbrains.com\/ko-kr\/pycharm\/\" target=\"\" rel=\"noopener\">PyCharm \uc9c0\uae08 \ub2e4\uc6b4\ub85c\ub4dc<\/a><\/div>\n<\/div>\n\n\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/01\/CheukTingHo-Kimono-e1738750639162-200x200.jpg\" width=\"200\" height=\"200\" alt=\"Cheuk Ting Ho\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Cheuk Ting Ho<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":1191,"featured_media":647983,"comment_status":"closed","ping_status":"closed","template":"","categories":[952,1401],"tags":[8900,8428,3252],"cross-post-tag":[8851],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/pycharm\/647982"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/pycharm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/pycharm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/1191"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=647982"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/pycharm\/647982\/revisions"}],"predecessor-version":[{"id":648034,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/pycharm\/647982\/revisions\/648034"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/647983"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=647982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=647982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=647982"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=647982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}