본문 바로가기
반응형

Python133

Python - Llama.cpp GPU로 Windows 에서 구동하기 Windows에서 Llama.cpp 버전을 사용하는 것은 필자와 같이 Windows를 주로 사용하는 유저에게는 꼭 필요한 부분으로, 약간은 번거롭지만, 어렵지 않고 한번 해두면 계속 사용할 수 있기 때문에 여기에 정리해 둔다.1. Git 설치Github과 같은 레포스토리지를 활용하기 위해서 설치해야 한다. 기본옵션으로 설치하자.Git - Downloading Package 2. Conda 설치별다른 옵션을 선택할 필요는 없다. 기본옵션으로 설치하자.Download Success | Anaconda설치시 기본 옵션으로 설치하자. 3. Visual Studio - C++를 사용한 데스크톱 개발 설치Windows용 Visual Studio C/C++ IDE 및 컴파일러윈도우에서는 cmake, nmake와 .. 2025. 7. 31.
Python - FastAPI로 로컬 LLaMA 모델을 API 실행 FastAPI를 이용하면, Ollama를 이용하지 않고도 직접 모델을 서비스하는 것이 쉽게 가능하다.만약 직접 모델을 다운로드하여 보다 자유롭게 운영하고 있다면, 아래와 같이 실행해보는 것을 추천한다.from fastapi import FastAPI, Requestfrom pydantic import BaseModelfrom llama_cpp import Llamaimport uvicorn# 모델 로드model_path = r"F:\LLM\Models\Meta-Llama-3.1-70B-Instruct-GGUF\Meta-Llama-3.1-70B-Instruct-Q3_K_M.gguf"llm = Llama(model_path=model_path, gpu_layers=-1)# FastAPI 앱 생성app = F.. 2025. 7. 30.
LangChain 로더 종류 및 특징 from langchain.document_loaders import TextLoader, CSVLoader, PyPDFLoader, DirectoryLoader, WikipediaLoader# 텍스트 파일 로딩text_loader = TextLoader("example.txt")documents = text_loader.load()# CSV 파일 로딩csv_loader = CSVLoader(file_path="data.csv")documents = csv_loader.load()# PDF 파일 로딩pdf_loader = PyPDFLoader("report.pdf")documents = pdf_loader.load()# 디렉토리 내 모든 파일 로딩dir_loader = DirectoryLoader("do.. 2025. 7. 28.
BERT 모델을 이용해서 이상 문장 학습 및 탐지하기 BERT 모델이 비밀번호 관련 문장을 학습하여 탐지할 수 있도록 설계하려면, 먼저 데이터셋을 준비하고, BERT 모델을 미세 조정(Fine-tuning)해야 합니다. 이 과정은 다음과 같이 구성됩니다:1. 데이터 준비먼저 비밀번호 관련 문장이 포함된 데이터셋이 필요합니다. 데이터셋은 "비밀번호가 포함된 문장"과 "비밀번호가 없는 문장"을 두 클래스로 나누어 구성해야 합니다.예시 데이터셋 (CSV 형식 예): 문장값"The password is 1234."1"This is just a normal sentence."0"비밀번호는 qwerty입니다."1"오늘 날씨가 참 좋네요."02. Hugging Face를 사용한 BERT 모델 Fine-tuning아래 코드는 BERT 모델을 이용해 문장을 분류할 수 있.. 2025. 4. 16.
Python - 내장 변수 관리 locals() locals() 함수는 현재 로컬 심볼 테이블을 나타내는 딕셔너리를 반환환다.이 딕셔너리는 함수 내에서 정의된 변수와 그 값을 포함합니다. locals()는 주로 디버깅이나 동적으로 로컬 변수를 조작할 때 유용하다.1. 로컬 변수 조회:locals()를 사용하면 함수 내에서 정의된 모든 로컬 변수를 쉽게 조회할 수 있습니다.2. 로컬 변수 수정:Python 3.13부터 locals()로 반환된 딕셔너리를 수정하면 실제 로컬 변수도 업데이트def update_locals(): test = 'hello' local_vars = locals() local_vars['test'] = 'world' print(test) # 출력: worldupdate_locals()CLI에서 현재 선언된 .. 2025. 4. 9.
Python - 글로벌 인터프리터 락(GIL) 제거를 위한 주요 기술 Python에서 글로벌 인터프리터 락(GIL) 은 동시성을 없애서 충돌이 없도록 하여, 쉽게 코딩할 수 있었지만, 그만큼 성능적으로 특히 멀티 코어에서 약점을 보였다. 하여 Python 3.12버전부터 GIL 없이 실행하는 방법은 주로 PEP 703에서 제안된 여러 기술을 통해 가능하게 되었는데, GIL은 CPython에서 여러 스레드가 동시에 Python 코드를 실행하는 것을 방지하는 메커니즘으로, 멀티코어 CPU를 효율적으로 활용하지 못하던 부분이 어떻게 가능하게 된 것일까? 관련하여 알아보도록 하자.GIL 제거를 위한 주요 기술멀티스레드에서 가장 큰 문제는 바로 변수 접근이라고 할 수 있다. 따라서 이를 Python에서는 객체가 참조되는지를 카운트하는 방식을 채택했다고 보면된다. 즉 삭제해도 되는 .. 2025. 4. 9.
FastAPI - Docs, Redoc 비활성화 하기 오늘은 간단한 주제인데, FastAPI를 이용해서 API Interface 확인을 위해서 Docs, Redoc많이 활성화해서 사용하는데, 실제 보안적으로 생각해보면, 내 인터페이스 전체를 노출하는건 상당한 위험이 될 수 있다.API 호출할 수 있는 파라메터를 전부 제공해주기 때문에, 다양한 공격 시나리오 및 테스트할 수 있는 루트를 제공하는 것이나 마찬가지가 된다. 따라서 대외적으로 API 서비스를 하지 않는 거라면 API 상세를 없애는게 바람직하다. 비활성화하는 방법은 간단하다.FastAPI app 생성 시점에 docs_url과 redoc_url 를 생성하지 않도록 하면된다.app = FastAPI(docs_url=None, redoc_url=None)그럼 아래와 같이 기존 Docs, Redoc 주소가.. 2025. 3. 28.
Python - (pymysql.err.OperationalError) (1241, 'Operand should contain 1 column(s)') INSERT (pymysql.err.OperationalError) (1241, 'Operand should contain 1 column(s)') 이 오류의 정확안 의미는 간단하다.내가 행하는 행위중 컬럼 하나 혹은 그 이상이 잘못되었다는 것이다.이 때 확인해보기 좋은것은 당시 입력값을 보여주는데, 하나씩 값을 확인해보면, 분명 잘못된 컬럼 값이 있음을 알 수 있을 것이다.주의하게 봐야 하는것으로 TSQL 문으로 넣을 때 규칙을 알고 있으면 좋은데 - 기본적으로 컬럼 과 입력값 을 쌍따옴표로 구분하기 때문에 이것이 잘 지켜지는지 보면 좋다.필자가 오류 내용 찾았던 값으로 msg 컬럼에 값을 넣는데, '(따옴표)으로 시작해야 하는데 입력값에 문제가 있다는 것을 알게 되었다.'msg': (False, '', '안녕이렇.. 2025. 1. 13.
Python - uv 패키지, 프로젝트 관리자 설치 및 사용법 오늘은 요즘 핫하다고 할 수 있는 uv를 이용해서 설치와 기본 사용법에 대해서 설명해보고자 한다.uv는 Python 패키지와 프로젝트를 관리할 수 있는데, pip 의 차기 버전이라고 할 수 있을 정도로 빠른 속도와 관리의 편의성을 제공한다.pip의 기존 문제점이라고 하기는 어렵지만, pip는 쉽게 사용할 수 있는 장점이 있는 반면에 프로젝트별 버전관리의 불편함과 느린 속도가 큰 문제점이다. uv는 프로젝트 관리와 패키지 관리를 일원화 하여 편의성을 높이고,(npm 같은 느낌)패키지를 설치하는데도 기존 pip보다 빠르게 구성되어 많은 최적화가 되어진 모습을 보여준다.또 기존에 Python의 버전 설치에 대한 부분도 함께 해결된다는 점은 큰 장점이라고 생각되며, 패키지 관리 역시 요즘 통합되고 있는 pypr.. 2025. 1. 8.
반응형