전체 글 243

GPT-4o는 이미지를 어떻게 인코딩할까?

GPT-4o는 이미지를 어떻게 인코딩할까? GPT-4o는 고해상도 모드에서 사용되는 각 512x512 타일을 처리하는 데 170 토큰을 부과함. 약 0.75 토큰/단어의 비율로 보면 이는 그림 한 장이 약 227 단어와 같다는 것"그림 한 장이 천 마디 말보다 낫다"는 말과 비교했을 때 약 4배 차이임170이라는 숫자는 기괴할 정도로 특이한 숫자임. OpenAI는 가격 책정에서 "20달러" 또는 "0.50달러"와 같은 반올림된 숫자나 내부 차원에 2와 3의 거듭제곱을 사용함170과 같은 숫자를 선택한 이유는 무엇일까? 프로그래밍에서 코드베이스에 설명 없이 그냥 던져진 숫자를 "매직 넘버"라고 하는데, 170은 상당히 눈에 띄는 매직 넘버임이미지 비용을 토큰 수로 변환하는 이유는 무엇일까? 단순히 청구 목..

AI/LLM 2024.07.27

Briefer – 일정, SQL, 내장 LLM이 포함된 멀티플레이어 노트북

Briefer – 일정, SQL, 내장 LLM이 포함된 멀티플레이어 노트북Notion + Jupyter 에 확장 기능을 추가노트북 스케줄링, 대시보드와 앱으로 변환, 데이터 프레임으로 결과를 리턴하는 SQL 쿼리 등기존 노트북의 문제점 해결공유의 어려움 : 데이터 팀 작업을 보기위해 Docker+Python 설치가 필요노트북이 너무 복잡함 : 코드 블록이 너무 많아져서 가독성 저하 및 비기술자가 이해하기 어려움데이터베이스 쿼리, API 호출, 그래프 작성 등의 간단한 작업도 복잡함Briefer의 해결 방법공유 문제 해결노트북을 클라우드로 이동하여 스케줄링 가능CRDTs와 Yjs를 사용해 상태 관리, 실시간 편집 반영노트북 정리깨끗한 디자인과 블록을 그룹화하여 정리 가능블록을 탭으로 그룹화하고, 공개 버전..

AI/AI News 2024.07.27

Google, AI 계약 덕분에 Reddit에서 작동하는 유일한 검색 엔진이 되다

Google, AI 계약 덕분에 Reddit에서 작동하는 유일한 검색 엔진이 되다Google은 이제 Reddit의 결과를 표시할 수 있는 유일한 검색 엔진임Reddit이 최근 robots.txt 파일을 업데이트하여 Google을 제외한 모든 검색 엔진의 크롤링을 차단함Bing, DuckDuckGo, Mojeek, Qwant 등 Google의 인덱싱에 의존하지 않는 대안 검색 엔진에서는 최근 1주일 동안의 Reddit 검색 결과를 볼 수 없음DuckDuckGo는 Reddit 검색 시 7개의 링크를 표시하지만, 링크의 목적지나 이유에 대한 정보는 제공하지 않음Kagi는 Google의 일부 검색 인덱스를 구매하여 Reddit 검색이 가능함이는 Google의 검색 독점이 다른 기업들의 경쟁 능력을 저해하는 시기..

AI/AI News 2024.07.27

"오픈소스 AI가 미래의 길입니다" by 마크 주커버그

"오픈소스 AI가 미래의 길입니다." by 마크 주커버그고성능 컴퓨팅 초기에 주요 기술 회사들은 자체적으로 폐쇄형 유닉스 버전을 개발함시간이 지나면서 오픈 소스 리눅스가 인기를 끌게 되었고, 현재 클라우드 컴퓨팅 및 모바일 운영 시스템의 표준이 됨AI도 비슷한 방식으로 발전할 것으로 예상됨이제 우리는 오픈소스 AI가 산업 표준이 되기 위한 다음 단계를 밟고 있음다양한 회사와 협력하여 더 광범위한 생태계를 성장시키는 중Meta는 오픈 소스 AI에 전념하고 있음.오픈 소스 AI가 개발자에게 좋은 이유모델을 직접 훈련하고 미세 조정 및 증류할 수 있음: 각 조직은 고유한 데이터를 사용하여 최적의 모델 크기로 조정 가능폐쇄형 벤더에 의존하지 않고 독립성 유지: 오픈 소스는 호환 가능한 툴체인 생태계를 제공하여 ..

AI/AI News 2024.07.27

RouteLLM - LLM 라우터 서빙 및 평가를 위한 프레임워크

RouteLLM - LLM 라우터 서빙 및 평가를 위한 프레임워크RouteLLM은 LMSys와 Anyscale이 협력하여 개발한 LLM 라우터 serving 및 평가를 위한 프레임워크모델 지원GPT-4와 Mixtral 8x7B 외에도 strong-model과 weak-model 인수를 수정하여 다양한 모델 조합 사용 가능LiteLLM을 활용해 다양한 오픈소스 및 closed 모델에서 chat completions 지원OpenAI 호환 엔드포인트도 사용 가능다양한 모델 제공업체의 API 키 설정 방법 제공개발 동기비용과 기능이 다양한 LLM을 배포할 때 고품질 응답을 위해 가장 강력한 모델을 사용하면 비용이 많이 들고, 저렴한 모델을 사용하면 품질이 낮아질 수 있음LLM 라우팅은 간단한 쿼리를 저렴한 모델..

AI/AI News 2024.07.27

PDF table-extraction (표 추출) 실험 (with pdfplumber, camelot, tabula-py)

table extraction은 문서로부터 표를 양식 그대로 추출하는 기술에 대해 연구하는 분야이다.이 기술은 주로 데이터 과학자들이나 연구자들에게 유용한데, 문헌이나 문서들로부터 표 형식의 데이터를 추출해서 가공 가능한 포맷 (예를 들면 csv나 dataframe) 등으로 변환하는 기술은 데이터로부터 다양한 인사이트를 얻는데 도움이 되기 때문이다. 파이썬을 사용해서 표를 추출하는 방법으로는 크게 3가지 툴이 추천되곤한다.pdfplumbercamelottabula-py개인적으로 이들 중에는 pdfplumber가 가장 높은 성능을 보였으며, 그 다음으로는 tabula-py가 좋았고, camelot이 가장 추출률이 좋지 않았었다.이제 예제 코드와 함께 각 툴들에 대해서 소개를 해보고자 한다.(참고로 해당 툴..

Python 2024.07.22

HuggingFace Transformers에서 Zero-shot Classification의 원리

HuggingFace Transformers 라이브러리에서는 다양한 파이프라인들을 제공한다. 그 중 하나로 ZeroShotClassificationPipeline 이라는 것이 있는데, 미리 학습되지 않은 라벨들에 대해서 분류를 하는 기법이다. 알다시피, 모델 학습에는 다양한 공수와 리소스가 소요되기 때문에 현업에서는 필요에 따라 ZeroShot 혹은 FewShot 모델들을 잘 활용해야 하는 경우가 많이 있다. GPT-4와 같은 생성형 모델에서는 LLM의 성능을 통해 이러한 Zero Shot Classification을 수행하게 되는데, BERT와 같은 임베딩 모델 기반 환경에서는 Zero Shot Classification을 어떻게 다루게 될까? 허깅페이스 트랜스포머 소스코드 (transformers/s..

AI/Transformers 2024.03.06

SQLAlchemy에서 session.commit()과 session.flush()의 차이

SQLAlchemy를 사용해서 어떤 데이터를 추가/변경 또는 삭제를 할 때 session.commit() 메소드와 session.flush() 메소드가 자주 사용되어지곤 한다. 기본적으로 둘 다 모든 적용되지 않은 변경 사항들을 저장하는 역할을 하나, session.commit()의 경우에는 한가지 추가적인 작업을 진행하게 되는데, 바로 연결된 모든 객체들을 expire 처리하고 다시 로딩을 한다는 점이다. 이 기능을 하는 여러가지 이유가 있겠지만, 대표적인 이유 중 하나로는 INSERT 후에 autoincrement id 값을 가져오기 위해서가 있다. 복잡한 비즈니스 로직을 구현하다보면 M:N의 문제들이 많이 발생하게 되는데, 이러한 경우 primary key들을 저장하는 매핑 테이블이 존재하기 마련이..

Python/sqlalchemy 2024.02.23

SQLAlchemy Session과 AsyncSession은 synchronizable한 객체일까?

SQLAlchemy에서 세션은 단일 데이터베이스 트랜잭션을 나타내는 변경 가능한 상태 저장 객체이다. 따라서 세션 객체는 신중한 동기화 없이는 동시 스레드 또는 비동기 작업 간에 공유할 수 없다. 세션은 non-concurrent 방식으로 (즉 특정 Session 객체는 한 번에 하나의 스레드 또는 작업에서만) 사용되어야 한다. SQLAlchemy의 asyncio 확장 기능에서 AsyncSession 객체를 사용하는 경우, 이 객체는 Session 객체를 기반으로 만들어지는 단순한 프록시일 뿐이며 동일한 규칙이 적용된다. AsyncSession은 동기화되지 않고 mutable(변경 가능)한 stateful한 특성을 가지는 객체이므로 여러 asyncio 작업에서 단일 인스턴스의 AsyncSession을 ..

Python/sqlalchemy 2024.02.23