아카이브
close
프로필 사진

아카이브

github: @denev6

  • 모두 보기 (167)
    • 일기장 (13)
    • AI (33)
      • study (9)
    • 프로그래밍 언어 (56)
      • Python (30)
      • Go (13)
      • C++ (10)
    • 기타 주제 (56)
      • 웹 (26)
  • 소개
  • 프로젝트
  • 일기장

Onnx에서 TFlite로

필자는 pytorch로 학습하는 것을 선호하고, 최근 많은 모델이 pytorch로 연구되고 있다. 하지만 경령화나 최적화를 위해서는 tensorflow나 tflite가 많이 사용된다. 이때 pytorch → onnx → tensorflow → tflite를 걸쳐 변환한다.본 글은 onnx를 tflite로 바꾸는 과정에서 했던 삽집을 기록한다.우선, onnx-tf는 사용하지 마라. Python ↔ tensorflow ↔ keras ↔ onnx 간에 버전 충돌이 있다. 삽질 결과 현재(25.07.23)는 사용이 불가능하다는 결론을 얻었다. 따라서 onnx2tf를 이용해 변환에 성공했다.Environment개발 환경과 패키지 버전은 다음과 같다.Linux (Ubuntu 24.02 LTS)Python 3.10[..

  • format_list_bulleted AI
  • · 2025. 7. 23.

RAG 성능 향상을 위한 Reranker 구현

본 글은 Claude Sonnet 4로 작성한 후 수정한 글입니다.Reranker의 이론적 원리정보 검색에서 Reranker는 전통적인 "retrieve-then-rerank" 패러다임의 핵심 구성 요소이다. 이 접근법은 두 단계로 이루어진다: 먼저 효율적인 검색 방법으로 후보 문서들을 수집하고, 그 다음 더 정교한 모델로 이들을 재정렬한다.초기 검색 단계에서는 벡터 유사도나 BM25와 같은 빠른 검색 방법을 사용하여 수천 개의 문서에서 수십 개의 후보를 선별한다. 이 과정은 높은 recall을 목표로 하며, 관련성이 있을 만한 문서들을 놓치지 않는 것에 중점을 둔다.두 번째 단계인 재정렬에서는 계산 비용이 높지만 정확도가 뛰어난 모델을 사용한다. 이 모델은 각 쿼리-문서 쌍을 정밀하게 분석하여 실제 관..

  • format_list_bulleted AI
  • · 2025. 7. 9.

Mem0로 기억하기

본 글은 Claude Sonnet 4로 작성 후, 수정한 글입니다.mem0란?mem0는 AI 애플리케이션을 위한 메모리 관리 시스템이다. 쉽게 말하면, 챗봇이 사용자와의 대화를 기억하고 맥락을 유지할 수 있게 도와주는 도구다. 사용자의 선호도, 대화 히스토리, 중요한 정보들을 자동으로 저장하고 관리한다.자동 메모리 추출: 대화에서 중요한 정보를 자동으로 식별하고 저장맥락 유지: 이전 대화 내용을 바탕으로 더 자연스러운 대화 가능개인화: 사용자별로 맞춤화된 응답 제공다양한 저장소 지원: 벡터 데이터베이스, 그래프 데이터베이스 등 다양한 백엔드 지원데이터 저장 방식mem0는 설정에 따라 다양한 방식으로 데이터를 저장할 수 있다:In-memory: 메모리에 임시 저장 (재시작 시 사라짐)파일 시스템: 로컬 파..

  • format_list_bulleted AI
  • · 2025. 7. 7.

TensorFlow와 tf.GradientTape를 활용한 딥러닝

본 글은 Claude Sonnet 4로 작성 후, 수정한 내용입니다.TensorFlow의 저수준 API인 tf.GradientTape를 활용한 딥러닝 학습 과정을 살펴보겠습니다. PyTorch에 익숙한 분들이라면 분명 Keras의 고수준 API가 답답했을 텐데, tf.GradientTape는 훨씬 직관적이고 세밀한 제어를 제공합니다.tf.GradientTape란?tf.GradientTape는 TensorFlow에서 자동미분을 위한 컨텍스트 관리자입니다. 테이프에 연산을 기록하고, 나중에 그 연산들의 gradient를 계산하는 역할을 합니다. PyTorch의 autograd와 매우 유사한 개념이죠.import tensorflow as tf# 간단한 예제with tf.GradientTape() as tape..

  • format_list_bulleted AI
  • · 2025. 7. 6.

TensorFlow 대용량 데이터 처리

100GB가 넘는 이미지 데이터를 처리해야 한다. 이 정도 데이터라면 절대 한 번에 읽고 처리할 수 없다. 따라서 데이터를 샘플 단위로 나눠서 I/O 작업 효율을 높여야 한다. Tensorflow에서 사용하는 아이디어는 다음과 같다.바이트를 순차적(sequantial)으로 접근할 수 있도록 저장한다.한 번에 읽을 수 있는 단위로 나누어 저장한다.I/O 작업을 병렬로 처리해 효율성을 높인다.데이터 저장import tensorflow as tf# 🔥이미지를 byte로 직렬화하고 수치 정보를 포함하여 하나의 Example로 만든다.def serialize_example(image, numeric_features): feature = { 'image': tf.train.Feature(byte..

  • format_list_bulleted AI
  • · 2025. 6. 28.

LLM 요청을 비동기로 처리

한국어 챗봇을 만들기 위해 VectorDB를 구성하던 중 영어 데이터를 한국어로 번역해야 하는 일이 있었다. 데이터는 약 200개의 행 + 2개의 열로 구성되어 있으며, 각 데이터는 10문장이 훨씬 넘는 긴 텍스트다.모든 데이터를 LLM으로 처리하다보니 꽤 긴 시간이 걸렸다. 그래서 API 요청을 비동기로 처리해 시간을 3배 이상 단축했다.비동기 처리Python은 asyncio로 비동기를 지원하며, Langchain도 ainvoke로 비동기 요청을 지원한다.async def translate(text, llm): chat = [ {"role": "system", "content": "당신은 전문 번역가입니다."}, {"role": "user", "content": "영어 문..

  • format_list_bulleted AI
  • · 2025. 5. 10.
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 7
  • navigate_next
전체 카테고리
  • 모두 보기 (167)
    • 일기장 (13)
    • AI (33)
      • study (9)
    • 프로그래밍 언어 (56)
      • Python (30)
      • Go (13)
      • C++ (10)
    • 기타 주제 (56)
      • 웹 (26)
Copyright © denev6 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바