반응형

Python 411

파이썬 FastAPI / Flask 로컬 서버 포트(127.0.0.1) 띄우기 방법 정리 및 차이 비교

Python에서 로컬 서버 포트 주소인 127.0.0.1:port에 해당하는 페이지를 띄우는 방법을 FastAPI와 Flask에서의 방법 차이를 기준으로 간략하게 정리해보도록 하겠습니다. FastAPI 서버 포트 띄우기 방법 FastAPI에서 로컬 서버 포트를 열기 위해서는 해당 모듈과 함께 uvicorn 모듈도 필요합니다. 아래 명령어를 통하여 간단히 설치가 가능합니다. $ pip install fastapi $ pip install uvicorn 다음과 같이 간단한 get 메서드를 지원하는 상황을 가정해보고, main.py 파일을 간단하게 작성해보도록 하겠습니다. from fastapi import FastAPI # FastAPI 객체 선언 app = FastAPI() # 기본 주소가 호출된 경우 실..

Python/Backend 2023.09.22

UnicodeEncodeError: 'cp949' codec can't encode character 원인 / 해결 방법

오류 개요 파이썬에서 txt나 json 파일을 read/write 하는 과정에서 다음과 같은 오류가 발생하였습니다. UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 122: illegal multibyte sequence 참고로, 해당 코드는 리눅스 체제에서는 정상 작동되었는데, 에러가 발생한 운영체제 환경은 윈도우였고, 한국어 세팅이었습니다. 오류 원인 한국어 환경에서의 인코딩은 'cp949'로 지정이 된 경우가 많은데, 유니코드('utf-8') 등 다른 인코딩 방법으로 인코딩된 파일을 다루는 경우, 인코딩 버전 불일치로 인하여 해당 에러가 발생할 수 있습니다. 오류 해결법 파일을 다루는 과정에서 encoding 방법을 명시적으..

Python/Debugging 2023.09.19

ChatGPT, GPT-4 토큰 개수 카운팅 및 인코딩/디코딩 방법(파이썬 tiktoken 모듈 활용)

GPT-3.5(ChatGPT) 및 GPT-4 활용을 위하여 원하는 글의 토큰 개수를 세거나 Encoding 및 Decoding 과정이 필요할 때가 종종 있습니다. 이 과정은 파이썬의 tiktoken 라이브러리의 기능을 활용하면 해당하는 토크나이저를 쉽게 불러올 수 있고, 토큰 개수 카운팅 및 인코딩/디코딩도 쉽게 할 수 있습니다. 이번 글에서는 해당 모듈의 사용법을 중심으로 위의 방법들을 간략하게 정리해보도록 하겠습니다. 토크나이저 선언 방법 우선, !pip install tiktoken 명령어로 모듈 설치를 진행해줍니다. 이후, ChatGPT(gpt-3.5-turbo) 혹은 GPT-4에 대하여 토크나이저를 가져오려면 cl100k_base 인코딩 방법을 지정해주시면 됩니다. 이후 모델명을 지정하여 최종 ..

Python/NLP Code 2023.09.19

파이썬 특정 시각에 코드를 실행하는 방법(schedule, threading 모듈 활용)

Python에서 코드를 실행시켜 두었을 때, 특정 시각마다 원하는 코드가 작동되도록 하고 싶을 때가 있습니다. 이번 글에서는 파이썬 내부에서 코드 주기적 실행이 가능하도록 하는 방법을 기본 예제와 별도의 스레드를 두는 예제로 나누어 간략하게 정리해보도록 하겠습니다. 특정 시각 실행 기본 예제(schedule 모듈) 예를 들어, 매일 오전 11시에 my_job() 함수 내의 코드를 실행하고 싶다면 schedule 라이브러리를 활용하여 다음과 같이 코드를 작성해주시면 됩니다. import schedule # 미설치 시 !pip install schedule import time def my_job(): print("오전 11시 입니다!") schedule.every().day.at("11:00").do(my..

Python/Utils 2023.09.18

원하는 corpus를 기준으로 토크나이저 학습하기 파이썬 코드 예제

새로운 코퍼스에 대하여 커스터마이징된 Tokenizer를 파이썬으로 학습시키는 방법을 간략하게 정리해보도록 하겠습니다. 예시로, 제가 corpus txt 파일 여러 개를 다음과 같은 디렉토리 구조로 가지고 있다고 가정해보도록 하겠습니다. 위의 많은 코퍼스 파일들을 통하여 토크나이저를 직접 학습시켜 보겠습니다. Step 1. 디렉토리명 가져오기 먼저, 위의 텍스트 파일들을 불러오기 위하여 디렉토리 목록을 가져와야 합니다. 이 과정을 os 모듈을 활용하여 진행한 예시 코드는 아래와 같습니다. import os dir_name = 'my_corpus' paths = os.listdir(dir_name) # ['corpus_15.txt', 'corpus_02.txt', 'corpus_09.txt', 'corpu..

Python/NLP Code 2023.09.17

파이썬 requests 비동기로 요청하기(aiohttp 및 asyncio 활용)

Python에서 requests 모듈로 get, post 등의 요청을 진행하는 경우가 종종 있는데요. 이번 글에서는 이러한 종류의 요청을 aiohttp 모듈을 통하여 async로 처리하는 방법을 간략하게 정리해보도록 하겠습니다. 일반적인 requests 사용 방법 예시 먼저, 일반적으로 GET 메소드를 requests 모듈로 실행하는 방법은 대략적으로 아래 코드처럼 정리가 가능합니다. import requests response = requests.get('요청 url') if response.status_code == 200: # 요청 성공 print('결과:', response.text) else: # 요청 실패 print('실패 상태 코드:', response.status_code) POST 메소드..

Python/Utils 2023.09.16

onnxruntime GPU 인식이 안되는 경우 해결 방법

문제 개요 onnx 파일로 저장된 모델을 사용하기 위하여 onnxruntime 모듈을 활용할 때, 아래 코드와 같이 CUDA GPU를 사용하도록 지정하였음에도 GPU 인식이 안되어 강제로 CPU만 사용되는 경우가 나타날 수 있습니다. import onnxruntime onnx_session = onnxruntime.InferenceSession("model.onnx", providers=['CUDAExecutionProvider']) 이런 경우에는 GPU 사용이 불가능한 경우를 안내하기 위하여 다음과 같은 warning 메시지가 출력되기도 합니다. UserWarning: Specified provider 'CUDAExecutionProvider' is not in available provider nam..

Python/Debugging 2023.09.16

[Pytorch] checkpoint vs torchscript vs onnx 모델 속도 비교

파이토치 모델 변환의 대표적인 3가지 포맷인 체크포인트, 토치스크립트 그리고 onnx 방식에 대하여 inference 과정의 속도를 비교해보는 간단한 실험을 진행해 보겠습니다.(동일한 GPU를 사용하는 환경을 가정해 보겠습니다.) 모델 정의 및 변환 코드 예시 우선, 아래와 같이 파라미터 수가 아주 많은 신경망 모델이 하나 있다고 가정해 보겠습니다. import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(50000, 20000) self.fc2 = nn.Linear(20000, 2000) self.fc3 = nn.Linear(2000, ..

Python/Pytorch 2023.09.14

[Pytorch] 실시간 파일 불러오기 방식 Dataset/Dataloader 구현 예제

파이토치에서 전체 데이터셋의 크기가 너무 크거나 다양한 경로에 나눠져 있는 경우 real-time으로 파일을 불러오는 방식의 데이터셋을 구현할 필요가 있습니다. 이 글에서는 실시간으로 파일을 불러오는 데이터셋의 형태를 구현하는 예제를 간략하게 정리해보도록 하겠습니다. 상황 가정 이해를 돕기 위하여 아래와 같이 images 디렉토리 내에 여러 이미지 파일이 저장된 상황을 가정해보도록 하겠습니다. 지금은 이미지 파일이 4개뿐이지만, 아주 많은 수의 이미지가 있는 경우 모든 데이터를 메모리에 동시에 올리는 것이 어려울 수 있습니다. 이런 문제를 해결하기 위하여 real-time 방식의 데이터셋 및 데이터로더를 정의하게 되면 메모리 부족 문제도 해결되면서 iteration 마다 다른 Data Augmentati..

Python/Pytorch 2023.09.13

파이썬 지도 시각화 모듈 Pygmt 튜토리얼 예제

Python Map Visualization : Pygmt 파이썬에서 실제 지도에 시각화를 진행할 수 있는 유용한 모듈인 Pygmt에 대하여 설치 및 간단한 사용법에 관한 예제를 다루어보도록 하겠습니다. 참고로, 해당 포스팅은 아래 링크의 Pygmt 튜토리얼을 참조하여 작성했습니다. Anatomy of a PyGMT figure — Crafting beautiful maps with PyGMT .ipynb .pdf to have style consistency --> www.generic-mapping-tools.org Pygmt 설치 방법 Pygmt 모듈은 단순히 pip으로 설치 시에는 경로 관련 오류가 발생할 수 있어, 아래의 명령어로 conda 가상환경을 만든 이후에 import를 해주셔야 합니다...

Python/Utils 2022.12.16
반응형