설치 | 문서 | API 참조 | 코드 샘플 | 컴퓨터 비전 | 법학대학원
Pixeltable은 다중 모드 데이터(텍스트, 이미지, 오디오, 비디오)에 대한 선언적 인터페이스를 제공하는 Python 라이브러리입니다. 버전 관리, 계보 추적 및 증분 업데이트 기능이 내장되어 있어 사용자가 ML 워크플로를 위해 데이터를 저장 , 변환 , 인덱싱 및 반복 할 수 있습니다.
데이터 변환, 모델 추론 및 사용자 정의 논리는 계산된 열로 포함됩니다.
pip install pixeltable
Pixeltable은 지속적입니다. Pandas와 같은 메모리 내 Python 라이브러리와 달리 Pixeltable은 데이터베이스입니다.
테이블을 만들고, 데이터로 채우고, 기본 제공 또는 사용자 정의 변환을 통해 테이블을 향상시키는 방법을 알아보세요.
주제 | 공책 | 주제 | 공책 |
---|---|---|---|
Pixeltable 10분 투어 | 테이블 및 데이터 작업 | ||
사용자 정의 함수(UDF) | 객체 감지 모델 | ||
증분 프롬프트 엔지니어링 | 외부 파일 작업 | ||
Label Studio와 통합 | 오디오/비디오 대본 인덱싱 | ||
다중 모드 애플리케이션 | 문서 인덱싱 및 RAG | ||
상황 인식 Discord 봇 | 이미지/텍스트 유사성 검색 |
import pixeltable as pxt
v = pxt . create_table ( 'external_data.videos' , { 'video' : pxt . Video })
prefix = 's3://multimedia-commons/'
paths = [
'data/videos/mp4/ffe/ffb/ffeffbef41bbc269810b2a1a888de.mp4' ,
'data/videos/mp4/ffe/feb/ffefebb41485539f964760e6115fbc44.mp4' ,
'data/videos/mp4/ffe/f73/ffef7384d698b5f70d411c696247169.mp4'
]
v . insert ({ 'video' : prefix + p } for p in paths )
Pixeltable에서 데이터로 작업하는 방법을 알아보세요.
import pixeltable as pxt
from pixeltable . functions import huggingface
# Create a table to store data persistently
t = pxt . create_table ( 'image' , { 'image' : pxt . Image })
# Insert some images
prefix = 'https://upload.wikimedia.org/wikipedia/commons'
paths = [
'/1/15/Cat_August_2010-4.jpg' ,
'/e/e1/Example_of_a_Dog.jpg' ,
'/thumb/b/bf/Bird_Diversity_2013.png/300px-Bird_Diversity_2013.png'
]
t . insert ({ 'image' : prefix + p } for p in paths )
# Add a computed column for image classification
t . add_computed_column ( classification = huggingface . detr_for_object_detection (
t . image ,
model_id = 'facebook/detr-resnet-50'
))
# Retrieve the rows where cats have been identified
t . select ( animal = t . image ,
classification = t . classification . label_text [ 0 ])
. where ( t . classification . label_text [ 0 ] == 'cat' ). head ()
계산 열 및 객체 감지에 대해 알아보기: 객체 감지 모델 비교.
@ pxt . udf
def draw_boxes ( img : PIL . Image . Image , boxes : list [ list [ float ]]) -> PIL . Image . Image :
result = img . copy () # Create a copy of `img`
d = PIL . ImageDraw . Draw ( result )
for box in boxes :
d . rectangle ( box , width = 3 ) # Draw bounding box rectangles on the copied image
return result
사용자 정의 함수: Pixeltable의 UDF에 대해 자세히 알아보세요.
# In this example, the view is defined by iteration over the chunks of a DocumentSplitter
chunks_table = pxt . create_view (
'rag_demo.chunks' ,
documents_table ,
iterator = DocumentSplitter . create (
document = documents_table . document ,
separators = 'token_limit' , limit = 300 )
)
보기를 활용하여 RAG 워크플로를 구축하는 방법을 알아보세요.
# The computation of the mAP metric can become a query over the evaluation output
frames_view . select ( mean_ap ( frames_view . eval_yolox_tiny ), mean_ap ( frames_view . eval_yolox_m )). show ()
모델 분석에 Pixeltable을 활용하는 방법을 알아보세요.
chat_table = pxt . create_table ( 'together_demo.chat' , { 'input' : pxt . String })
# The chat-completions API expects JSON-formatted input:
messages = [{ 'role' : 'user' , 'content' : chat_table . input }]
# This example shows how additional parameters from the Together API can be used in Pixeltable
chat_table . add_computed_column (
output = chat_completions (
messages = messages ,
model = 'mistralai/Mixtral-8x7B-Instruct-v0.1' ,
max_tokens = 300 ,
stop = [ ' n ' ],
temperature = 0.7 ,
top_p = 0.9 ,
top_k = 40 ,
repetition_penalty = 1.1 ,
logprobs = 1 ,
echo = True
)
)
chat_table . add_computed_column (
response = chat_table . output . choices [ 0 ]. message . content
)
# Start a conversation
chat_table . insert ([
{ 'input' : 'How many species of felids have been classified?' },
{ 'input' : 'Can you make me a coffee?' }
])
chat_table . select ( chat_table . input , chat_table . response ). head ()
Pixeltable에서 Together AI와 같은 추론 서비스와 상호작용하는 방법을 알아보세요.
import pixeltable as pxt
from pixeltable . functions . huggingface import clip_image , clip_text
from pixeltable . iterators import FrameIterator
import PIL . Image
video_table = pxt . create_table ( 'videos' , { 'video' : pxt . Video })
video_table . insert ([{ 'video' : '/video.mp4' }])
frames_view = pxt . create_view (
'frames' , video_table , iterator = FrameIterator . create ( video = video_table . video ))
@ pxt . expr_udf
def embed_image ( img : PIL . Image . Image ):
return clip_image ( img , model_id = 'openai/clip-vit-base-patch32' )
@ pxt . expr_udf
def str_embed ( s : str ):
return clip_text ( s , model_id = 'openai/clip-vit-base-patch32' )
# Create an index on the 'frame' column that allows text and image search
frames_view . add_embedding_index ( 'frame' , string_embed = str_embed , image_embed = embed_image )
# Now we will retrieve images based on a sample image
sample_image = '/image.jpeg'
sim = frames_view . frame . similarity ( sample_image )
frames_view . order_by ( sim , asc = False ). limit ( 5 ). select ( frames_view . frame , sim = sim ). collect ()
# Now we will retrieve images based on a string
sample_text = 'red truck'
sim = frames_view . frame . similarity ( sample_text )
frames_view . order_by ( sim , asc = False ). limit ( 5 ). select ( frames_view . frame , sim = sim ). collect ()
임베딩 및 벡터 인덱스를 사용하여 작업하는 방법을 알아보세요.
요구 사항 | 전통적인 | 픽셀테이블 |
---|---|---|
프레임 추출 | ffmpeg + 사용자 정의 코드 | FrameIterator를 통해 자동 |
객체 감지 | 다중 스크립트 + 캐싱 | 단일 계산 열 |
비디오 인덱싱 | 맞춤형 파이프라인 + 벡터 DB | 기본 유사성 검색 |
주석 관리 | 별도의 도구 + 사용자 정의 코드 | 라벨 스튜디오 통합 |
모델 평가 | 커스텀 측정항목 파이프라인 | 내장된 mAP 계산 |
요구 사항 | 전통적인 | 픽셀테이블 |
---|---|---|
문서 청킹 | 도구 + 사용자 정의 코드 | 기본 문서 분할기 |
임베딩 생성 | 별도의 파이프라인 + 캐싱 | 계산된 열 |
벡터 검색 | 외부 벡터 DB | 내장된 벡터 인덱싱 |
신속한 관리 | 맞춤형 추적 솔루션 | 버전 관리 열 |
체인 관리 | 도구 + 사용자 정의 코드 | 계산 열 DAG |
요구 사항 | 전통적인 | 픽셀테이블 |
---|---|---|
데이터 유형 | 다중 스토리지 시스템 | 통합 테이블 인터페이스 |
교차 모달 검색 | 복잡한 통합 | 기본 유사성 지원 |
파이프라인 오케스트레이션 | 다양한 도구(Airflow 등) | 단일 선언적 인터페이스 |
자산관리 | 맞춤형 추적 시스템 | 자동 계보 |
품질 관리 | 다양한 검증 도구 | 계산된 검증 열 |
Pixeltable은 계산된 열로 표시되는 변환, 모델 추론 및 사용자 지정 논리를 사용하여 선언적 테이블 인터페이스에서 오케스트레이션 및 모델 버전 관리를 통해 데이터 저장소, 버전 관리 및 인덱싱을 통합합니다.
오늘날 AI 앱 개발을 위한 솔루션에는 광범위한 맞춤형 코딩과 인프라 배관이 필요합니다. 데이터 변환, 모델 및 배포 간 계보와 버전을 추적하는 것은 번거롭습니다. Pixeltable을 사용하면 ML 엔지니어와 데이터 과학자는 일반적인 데이터 배관을 다루지 않고도 탐색, 모델링 및 앱 개발에 집중할 수 있습니다.
팁
통합 섹션을 확인하고 추가 요청을 제출해 주시기 바랍니다.
커뮤니티의 기여를 환영합니다! 참여 방법은 다음과 같습니다.
이 라이브러리는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.