빅데이타 & 머신러닝 148

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #1

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #1 조대협 (http://bcho.tistory.com) RAG의 개념 Open AI의 ChatGPT나 Google의 PaLM 모델, 메타의 LLama 모델과 같은 LLM 모델은 학습 당시에 지식을 저장하여 뉴럴 네트워크 상에 그 지식을 담고 있다. 그래서 학습 당시까지의 지식을 기반으로한 질문에 대해서는 답변을할 수 있지만, 학습이 되지 않은 데이터나 또는 그 이후 나온 데이터에 대해서는 답변을 할 수 없는 제약을 가지고 있다. 또한 잘못된 정보를 학습하여, 잘못된 답을 내놓는 경우가 있을 수 있는데, 이를 Hallucination (환상)효과라고 한다. 이러한 두 문제를 해결하려면 최신의 데이터와 질문에 대한 답을 ..

VAE를 통해서 본 이미지 생성 모델의 원리

VAE를 통해서 본 이미지 생성 모델의 원리 조대협 (http://bcho.tistory.com) 요즘 Mid Journey 모델이나 DALLE-3 모델과 같은 이미지 생성 모델이 많이 소개되어, 어떤 원리로 이미지를 생성하는지 궁금하였다. GAN,Transformer등 여러가지 모델이 있지만 VAE (Variant Auto Encoder)모델을 이용하여 이미지를 변경하는 방법이 상대적으로 이해하기 쉬워서 VAE기반의 이미지 편집 원리를 정리하였다. 오토 인코더와 VAE에 대한 개념 설명 : (이 글을 읽기전에 AutoEncoder와 VAE에 대한 개념/원리는 아래 글을 참고하기를 권장한다.) 오토 인코더에 대한 개념 설명은 https://bcho.tistory.com/1197 오토 인코더 샘플 코드는 ..

생성형 AI ChatGPT/Bard LLM에서 프롬프팅을 이용한 공격/방어 방법

LLM 프롬프트 공격 방법 조대협(http://bcho.tistory.com) 일반적으로 LLM을 이용해서 애플리케이션을 개발할때 Lang Chain과 같은 프레임웍을 사용한 후에, 프롬프트 템플릿을 사용하여 제약이나 LLM의 역할등을 정의하고, 그 다음에 사용자에게 입력 받은 프롬프트를 삽입하여 전체 프롬프트를 만들어 낸다. 아래와 같은 구조가 되는데, {llm role}{llm mission} {context} {user prompt} {constraint} 예를 들면 다음과 같은 쇼핑몰 도움이 챗봇이라고 할때 다음과 같은 구조가 될 수 있다고 하자. {너는 쇼핑몰 상품 추천 쳇봇이다.} {너의 목표는 사용자의 입력을 받아서, 적절한 상품을 추천해주는 것이다.} : 여기서 LLM 모델은 쇼핑몰 쳇봇으..

주제와 관계 없는 질문을 막기 위한 DARE 프롬프팅 기법

주제와 관계 없는 질문을 막기 위한 DARE 프롬프팅 기법 조대협 (http://bcho.tistory.com) LLM모델을 기반으로 채팅 서비스등을 개발할때, 마주하는 문제중 하나가 사용자가 주제와 관련 없는 질문을 하는 경우 이를 어떻게 판별하고 필터링할 것인가이다. 예를 들어 LLM(ChatGPT등) API를 바로 연결해서 여행 사이트용 챗봇을 만들었다고 가정하자. 이때 사용자가 악의적으로 여행과 관련 없는 질문을 하더라도 LLM API로 전달된 질문은 답변이 되기 때문에 악용 될 수 있다. 예를 들어 아래 프롬프트는 챗봇에게 여행사이트 챗봇의 역할을 부여하고 컨택스트를 강제하여 주었지만 사용자가 미국 자동차 모델중 최고 모델을 질의하는 프롬프트인데, 여행 챗봇임에도 불구하고 이 질문에 대해서 답변..

LangChain에서 Vertex.AI LLM 사용하기

LangChain 에서 Vertex.AI LLM 사용하기 조대협 (http://bcho.tistory.com) 라이브러리 설치 !pip install 'google-cloud-aiplatform>=1.25.0' !pip install --user langchain 필요라이브러리로는 Google Cloud AI Platform SDK 1.25 버전 이상이 필요하며, Langchain 라이브러리를 같이 설치한다. 환경 설정 구글 클라우드에서 LLM API 를 호출하기 위해서는 API 인증 및 사용하는 프로젝트를 지정해야 한다. 여기서는 편의상 구글 클라우드 Vertex.ai workbench (매니지드 Jupyter 노트북)을 생성하면서 Service account를 먼저 생성해놓고, Vertex.AI를 호..

LLM 모델과 프롬프트 작성 방법

LLM 모델과 프롬프트 작성 방법 조대협 (http://bcho.tistory.com) LLM (Large Language Model)은 생성형 AI (Generative AI) 중의 하나로, 자연어 처리를할 수 있는 머신러닝 모델로, 자연어로 내리는 명령어 대해서 텍스트 아웃풋을 내는 모델이다. 예를 들어 문장을 요약하거나, 검색 엔진처럼 특정 질문에 대해서 답변을 하는 등의 기능을 수행할 수 있다. 일반적으로 LLM로 제공되는 모델들은 다음과 같다. LLM : 일반적인 LLM으로 일반적인 자연어 처리 엔진이다. Coding : 코딩에 최적화된 모델로 자연어로 입력을 받아서 소스 코드를 생성하거나, 코드 자동완성, 코드에 대한 주석 생성등을 지원한다.Coding LLM도 일반적인 Q&A나 명령을 수행하..

Google JAX 소개

모두의 연구소 JAX님 영상 강의 요약 Numpy의 대체제이지만 GPU,TPU 사용이 가능함. 구글과 허깅페이스가 강력하게 밀고 있는 프레임웍. Functional programming 모델로 Numpy와 프로그래밍 모델이 다소 다름. Immutable(변경 불가능 특징)을 가짐. 예를 들어 # In NumPy arrays are mutable x = np.arange(size) print(x) x[index] = value print(x) JAX의 경우 직접 값을 변경하는것이 불가능하고 set function을 직접 사용해야 한다. # Solution/workaround: y = x.at[index].set(value) print(x) print(y) JIT 컴파일 방식을 사용함. @jit 데코레이터나..

Vertex.AI로 파이프라인과 metadata 구현하기

Vertex.AI Pipeline(Kubeflow pipeline) & metadata 조대협 (http://bcho.tistory.com) 이 글은 google developer codelab의 Using Vertex ML Metadata with Pipeline 예제를 기반으로 한다. . (코드 소스 : https://codelabs.developers.google.com/vertex-mlmd-pipelines) 예제 코드의 실행은 위의 링크를 참고하면, step by step으로 진행할 수 있다. Vertex.AI는 구글 클라우드의 AI 플랫폼 솔루션으로 여러가지 컴포넌트를 가지고 있다. 이 예제에서는 데이터를 읽어서 학습하고, 모델을 만들어서 배포하는 파이프라인에 대해서 설명한다. 파이프라인의 개..

머신러닝 파이프라인에서 데이터 전처리 방법

Data Preprocessing in ML Pipeline 본글은 구글 클라우드 블로그에 포스팅한 글을, 재 포스팅 허가를 받은 후 포스팅한 글입니다. 다른 좋은 글들도 많으니 아래 출처 링크를 참고해 주새요출처 링크 머신러닝 파이프라인에서, 데이터는 모델 학습 및 서빙의 입력에 알맞게 가공되어야 한다. 이를 전처리라고 하는데, 이번 글에서는 전처리에 대한 개념과 이에 대한 구현 옵션등에 대해서 알아보도록 한다.처리 단계별 데이터 분류머신러닝에서 데이터 전처리는 모델 학습에 사용되는 데이터 형태로 데이터를 가공하는 과정을 이야기한다.데이터 전처리는 여러 단계로 이루어지는데, 단계별로 처리된 데이터에 대해서 다음과 같이 명명한다. Raw data초기에 수집된 원본 데이터로 분석이나, 머신러닝 학습 용도로..

분산형 데이터 분석 아키텍처-데이터 매쉬

Data mesh조대협 (http://bcho.tistory.com) Data mesh는 빅데이터 분석 시스템의 아키텍쳐 스타일로, 마이크로 서비스 아키텍처 (이하 MSA)컨셉과 유사하게 데이터 분석 시스템을 각각의 분산된 서비스 형태로 개발 관리하는 아키텍쳐 모델이다. 이번 글에서는 차세대 데이터 분석 시스템 아키텍처인 Data mesh에 대해서 알아본다. 데이터 분석 시스템의 역사Data mesh에 대해서 이해하려면 기존의 데이터 분석 시스템의 아키텍처와 그 역사에 대해서 이해하라 필요가 있다.데이터 분석 시스템은, DataWare house를 거쳐 현재는 Data Lake 형태가 주류를 이루고 있으며, 차세대로는 Data Mesh가 각광 받고 있다. 각각 아키텍처 스타일을 보면 다음과 같다.Data..