전체 글 179

openai 를 이용한 RAG (Question and Answer) - openai cookbook

기본적으로 RAG에 관한 관심이 굉장히 많아지는 요즘, 제대로 한 번 해보기로 했습니다.reference site : https://github.com/openai/openai-cookbook/blob/main/examples/Question_answering_using_embeddings.ipynb openai-cookbook/examples/Question_answering_using_embeddings.ipynb at main · openai/openai-cookbookExamples and guides for using the OpenAI API. Contribute to openai/openai-cookbook development by creating an account on GitHub.gi..

openai 2024.07.23

RAFT(Retrieval Augemented Fine tuning)에서 어떤 식으로 Fine tuning을 해야할까요?

지난 포스트에서, RAG을 할 바에야 RAFT를 하는 것이 낫다는 결론을 내면서 끝을 냈습니다. 하지만 실제로 어떤 식으로 Fine-tuning 을 해야되는 지에 대해서는 알아보지 않았는데요, 이번 포스트에서는 어떤식으로 Fine-tuning을 하는지에 대해서 실질적인 예시를 가져와서 알아보도록 하겠습니다.   위의 example은 실제 training 에 사용되는 데이터를 가지고 온 것입니다.  이를 활용하면, 실제 finetune 하는게 그렇게 어렵지 않을 것 같습니다. 하지만 확실히, 그냥 finetuning 하는것보다는 훨씬 공수가 많이 드는 작업이긴 할 것 같습니다. 실제 가져와야되는 데이터들이 많으니깐 말이죠. 그리고 실제 context에서 일일히 참조가 되는 정보를 뽑아서 제공해줘야되기도 하..

Deep Learning/NLP 2024.07.17

RAG의 새로운 대안 .. RAFT(RAG 할바에야 RAFT!)

요즘 RAG(Retrieval Augmented Generation)를 모르는 사람이 없을 정도로 RAG가 대세로 떠오르고 있습니다. RAG를 모르는 사람들을 위해서 간단하게 설명하자면, RAG란, Base Document가 있고, 거기를 참고해서 Q&A를 하게 만드는 것을 말합니다. Prompt Engineering 을 어떻게 하느냐에 따라 물론 달라지겠지만, Hallucination을 방지하기 위해서 많이 씁니다. 하지만 단점으로는, Base model의 성능에 너무 많은 의존을 하게 되고, 그러다 보니 Foundation 모델의 성능이 떨어지게 되면 성능의 퀄리티가 떨어지는 단점이 있습니다. Foundation model 의 성능에 의존하다 보니, 가장 좋은 모델 (가령, GPT 4)를 쓸 수 밖에..

Deep Learning/NLP 2024.07.16

Kubeflow를 이용한 Vertex Pipeline 만들기 (Intro)

TFX를 사용해서 ml pipeline을 만드는 법에 대한 피드백을 저번 글에서 했었는데, 이번에는 Kubeflow를 사용해서 ml pipeline 을 만드는 방법을 공유하고자 합니다. 약간의 삽질(?)이 필요하지만, 꾸준히 하다보면 감을 잡으실 수 있을거라고 생각합니다. 오늘 소개할 내용은 codelabs.developers.google 에서 제공하는 tutorial을 따라가는 내용이고, 그 전에 gcp에 대한 경험이 좀 있으면 좋을 것이라고 생각합니다.  일단 Vertex Pipeline을 실행(?)이라고 해야되나 만든다고 해야되나.. 하기 위해서는 여러가지 방법이 있습니다. 그 중 하나는 google console에 들어가서 vertex pipeline에 들어가서 코드를 올리는 방법이 있고, 또 j..

Machine Learning 2024.04.29

ML Pipeline - TensorFlow Extended 억울해서 올리는 후기

Machine Learning 관련해서 Cloud에 pipeline을 올리는 일을 하려고 하는데, TFX를 사용해서 하고싶다는 욕구가 강하게 들었습니다. 그 이유는 W&B Seminar를 갔었는데, TFX를 사용하는 게 좋다고 말을 많이 들었기 때문이죠. Etri의 박찬성 연구자분이 하시는 세미나를 듣고, 잘 모르지만 써보고 싶다는 욕구가 강하게 들어서, 한번 사용해 보았습니다. 하지만.. 현실은.. 좋지 않았습니다. 그럼 TFX가 무엇인가? 에 대해서 간단하게 말씀드리자면, TFX 는 프로덕션 ML 파이프라인을 배포하기 위한 End to End platform입니다. 한 마디로, 코드 component 들을 모아놓은 라이브러리들의 합 (그래서 플랫폼) 이라고 할 수 있습니다. 결국 로컬에서 사용할 수도..

Machine Learning 2024.04.23

gcp vertex ai 에서 python version 안맞을 때

제 포스트에서 https://walkaroundthedevelop.tistory.com/127 Anaconda 가상환경을 jupyter notebook에서 사용하기 Jupyter Notebook은 여러 개의 파이썬 스크립트를 순차적으로 실행하고 디버깅 해볼 수 있도록 가능하게 하는 좋은 툴입니다. 하지만 항상 머신러닝에서 그러듯이, 가상환경과 라이브러리 인스톨하 walkaroundthedevelop.tistory.com python conda 환경을 kernel에서 어떻게 사용하는지 포스팅을 썼습니다. gcp vertex ai 에서 이렇게 했는데도 python version이 바뀌지 않는 것을 발견했습니다. !python3 --version !which python3 !which jupyter Pytho..

환경설정 2024.03.25

3071. Minimum Operations to Write the Letter Y on a Grid

콘테스트 3번 문제로 나온 문제인데, 이 문제도 그렇게 어려운 편은 아니었던 것 같습니다. Y자의 위에까지부분을 iterate하고, 그 다음 부분을 iterate 합니다. 가짓수가 그렇게 많지는 않기 때문에 모든 경우의 수를 다 해버렸습니다. 나중에 결과 보니깐 시간 복잡도 측면에서는 좀 안좋게 나왔네요. class Solution: def minimumOperationsToWriteY(self, grid: List[List[int]]) -> int: n = len(grid) def ttry(x, y): count = 0 for i in range((n // 2)): for j in range(n): if i == j: if grid[i][j] != x: count += 1 elif n-j-1 == i:..

3070. Count Submatrices with Top-Left Element and Sum Less Than k

사실 그렇게 어려운 문제는 아니었습니다. weekly contest에서 두번째로 나왔던 문제로, prefix sum을 사용해서, 각 row의 합을 저장해서 새로운 list에 저장하고, 새로운 row에서 iterate할 때는 새로운 row에서 그 row의 합들과 지금까지 더한 위의 row의 합을 더해주는 방식으로 해서 몇 번의 시행착오 끝에 풀어낼 수 있었습니다. class Solution: def countSubmatrices(self, grid: List[List[int]], k: int) -> int: m, n = len(grid[0]), len(grid) new_matrix = [[0 for _ in range(m)] for _ in range(n)] # print(new_matrix) count ..

metric learning / deep metric learning에 관하여

Metric learning은 Machine learning 의 한 분야로, object 간의 거리 함수를 학습하는데 초점을 맞춘다고 합니다. 이 거리 함수는 metric 공간에서의 similarity 또는 dissimilarity 를 결정하는데 사용된다고 합니다. k-nn(nearest neighbor 나, clustering 등의 방법에도 이용이 된다고 합니다. Deep Metric learning이란, 앞에서 설명한 Metric Learning을 Deep learning 에 적용시킨 것이라고 볼수 있을 것입니다. 각각의 데이터들의 거리를 임베딩 공간 측정해서, 유사한 객체는 서로 가깝게, 그렇지 않은 객체는 멀게 배치 합니다. 이미지 인식, 얼굴 검증, 추천 시스템 등의 작업에 유용하다고 합니다. ..

Machine Learning 2024.01.31

RAG란? 그리고 Langchain 을 이용한 구현까지

RAG란, Retrieval-Augmented Generation의 약자로, retriever(검색기) 파트와 generator(생성기) 파트로 나눠져 있습니다. retriever는 관련 정보를 Database에서 검색하고, 생성기는 이 정보를 사용하여서 최종 응답을 생성합니다. 관련 링크 : https://python.langchain.com/docs/use_cases/question_answering/ Q&A with RAG | 🦜️🔗 Langchain Overview python.langchain.com Indexing 이후에, (load -> split -> store)이후에, Vector Database 또는 Embedding model 에 저장한 후에, Retrieval 과 Generation..

Deep Learning/NLP 2024.01.23