Transformers documentation
Pipelines
Pipelines
Các pipeline là cách tuyệt vời và dễ dàng để sử dụng mô hình cho suy luận. Các pipeline này là các đối tượng trừu tượng hóa phần lớn mã phức tạp từ thư viện, cung cấp một API đơn giản dành cho một số tác vụ, bao gồm Nhận thực thể có tên (Named Entity Recognition), Mô hình hóa ngôn ngữ có mặt nạ (Masked Language Modeling), Phân tích cảm xúc (Sentiment Analysis), Trích xuất đặc trưng (Feature Extraction) và Trả lời câu hỏi (Question Answering). Xem danh sách tác vụ để có ví dụ sử dụng.
Có hai nhóm trừu tượng hóa pipeline cần lưu ý:
- pipeline() là đối tượng mạnh mẽ nhất, đóng gói tất cả các pipeline khác.
- Các pipeline dành riêng cho từng tác vụ có sẵn cho các tác vụ âm thanh, thị giác máy tính, xử lý ngôn ngữ tự nhiên và đa phương thức.
Trừu tượng hóa pipeline
Trừu tượng pipeline là một lớp bọc quanh tất cả các pipeline khác có sẵn. Nó được khởi tạo như bất kỳ pipeline nào khác nhưng có thể cung cấp thêm các tiện ích nâng cao trải nghiệm sử dụng.
Gọi đơn giản trên một mục:
>>> pipe = pipeline("text-classification")
>>> pipe("This restaurant is awesome")
[{'label': 'POSITIVE', 'score': 0.9998743534088135}]Nếu bạn muốn sử dụng một mô hình cụ thể từ hub, bạn có thể bỏ qua tác vụ nếu mô hình trên hub đã định nghĩa sẵn:
>>> pipe = pipeline(model="FacebookAI/roberta-large-mnli")
>>> pipe("This restaurant is awesome")
[{'label': 'NEUTRAL', 'score': 0.7313136458396912}]Để gọi một pipeline trên nhiều mục, bạn có thể gọi nó bằng một list.
>>> pipe = pipeline("text-classification")
>>> pipe(["This restaurant is awesome", "This restaurant is awful"])
[{'label': 'POSITIVE', 'score': 0.9998743534088135},
{'label': 'NEGATIVE', 'score': 0.9996669292449951}]Để lặp qua các bộ dữ liệu đầy đủ, khuyến nghị sử dụng trực tiếp một dataset. Điều này có nghĩa là bạn không cần cấp phát toàn bộ bộ dữ liệu cùng lúc, cũng không cần tự thực hiện việc chia batch. Cách này nên chạy nhanh tương đương như các vòng lặp tùy chỉnh trên GPU. Nếu không, đừng ngần ngại tạo một issue.
import datasets
from transformers import pipeline
from transformers.pipelines.pt_utils import KeyDataset
from tqdm.auto import tqdm
pipe = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h", device=0)
dataset = datasets.load_dataset("s3prl/superb", name="asr", split="test")
# KeyDataset (only *pt*) will simply return the item in the dict returned by the dataset item
# as we're not interested in the *target* part of the dataset. For sentence pair use KeyPairDataset
for out in tqdm(pipe(KeyDataset(dataset, "file"))):
print(out)
# {"text": "NUMBER TEN FRESH NELLY IS WAITING ON YOU GOOD NIGHT HUSBAND"}
# {"text": ....}
# ....Để dễ sử dụng hơn, một trình tạo (generator) cũng có thể được sử dụng:
from transformers import pipeline
pipe = pipeline("text-classification")
def data():
while True:
# This could come from a dataset, a database, a queue or HTTP request
# in a server
# Caveat: because this is iterative, you cannot use `num_workers > 1` variable
# to use multiple threads to preprocess data. You can still have 1 thread that
# does the preprocessing while the main runs the big inference
yield "This is a test"
for out in pipe(data()):
print(out)
# {"text": "NUMBER TEN FRESH NELLY IS WAITING ON YOU GOOD NIGHT HUSBAND"}
# {"text": ....}
# ....transformers.pipeline
< source >( task: str | None = Nonemodel: str | PreTrainedModel | None = Noneconfig: str | PreTrainedConfig | None = Nonetokenizer: str | PreTrainedTokenizer | PreTrainedTokenizerFast | None = Nonefeature_extractor: str | FeatureExtractionMixin | None = Noneimage_processor: str | BaseImageProcessor | None = Nonevideo_processor: str | BaseVideoProcessor | None = Noneprocessor: str | ProcessorMixin | None = Nonerevision: str | None = Noneuse_fast: bool = Truetoken: str | bool | None = Nonedevice: int | str | torch.device | None = Nonedevice_map: str | dict[str, int | str] | None = Nonedtype: str | torch.dtype | None = 'auto'trust_remote_code: bool | None = Nonemodel_kwargs: dict[str, Any] | None = Nonepipeline_class: Any | None = None**kwargs: Any ) → Pipeline
Tham số
- task (
str) — Nhiệm vụ xác định pipeline nào sẽ được trả về. Các nhiệm vụ được chấp nhận hiện tại là:"audio-classification": sẽ trả về một AudioClassificationPipeline."automatic-speech-recognition": sẽ trả về một AutomaticSpeechRecognitionPipeline."depth-estimation": sẽ trả về một DepthEstimationPipeline."document-question-answering": sẽ trả về một DocumentQuestionAnsweringPipeline."feature-extraction": sẽ trả về một FeatureExtractionPipeline."fill-mask": sẽ trả về một FillMaskPipeline:."image-classification": sẽ trả về một ImageClassificationPipeline."image-feature-extraction": sẽ trả về một ImageFeatureExtractionPipeline."image-segmentation": sẽ trả về một ImageSegmentationPipeline."image-text-to-text": sẽ trả về một ImageTextToTextPipeline."keypoint-matching": sẽ trả về một KeypointMatchingPipeline."mask-generation": sẽ trả về một MaskGenerationPipeline."object-detection": sẽ trả về một ObjectDetectionPipeline."table-question-answering": sẽ trả về một TableQuestionAnsweringPipeline."text-classification"(có alias"sentiment-analysis"): sẽ trả về một TextClassificationPipeline."text-generation": sẽ trả về một TextGenerationPipeline:."text-to-audio"(có alias"text-to-speech"): sẽ trả về một TextToAudioPipeline:."token-classification"(có alias"ner"): sẽ trả về một TokenClassificationPipeline."video-classification": sẽ trả về một VideoClassificationPipeline."zero-shot-classification": sẽ trả về một ZeroShotClassificationPipeline."zero-shot-image-classification": sẽ trả về một ZeroShotImageClassificationPipeline."zero-shot-audio-classification": sẽ trả về một ZeroShotAudioClassificationPipeline."zero-shot-object-detection": sẽ trả về một ZeroShotObjectDetectionPipeline.
- model (
strhoặc PreTrainedModel, tùy chọn) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây có thể là một định danh mô hình hoặc một thực thể thực tế của mô hình được huấn luyện trước kế thừa từ PreTrainedModel.Nếu không được cung cấp, giá trị mặc định cho
tasksẽ được tải. - config (
strhoặc PreTrainedConfig, tùy chọn) — Cấu hình sẽ được pipeline sử dụng để khởi tạo model. Đây có thể là định danh model hoặc một cấu hình model pretrained thực tế kế thừa từ PreTrainedConfig.Nếu không được cung cấp, tệp cấu hình mặc định cho model được yêu cầu sẽ được sử dụng. Điều đó có nghĩa là nếu
modelđược chỉ định, cấu hình mặc định của nó sẽ được dùng. Tuy nhiên, nếumodelkhông được cung cấp, cấu hình của model mặc định chotasknày sẽ được sử dụng thay thế. - tokenizer (
strhoặc PreTrainedTokenizer, tùy chọn) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đây có thể là định danh model hoặc một tokenizer pretrained thực tế kế thừa từ PreTrainedTokenizer. Nếu không được cung cấp, tokenizer mặc định cho model đã cho sẽ được tải (nếu nó là chuỗi). Nếu model không được chỉ định hoặc không phải là chuỗi, thì tokenizer mặc định cho config sẽ được tải (nếu nó là chuỗi). Tuy nhiên, nếu config cũng không được cung cấp hoặc không phải là chuỗi, thì tokenizer mặc định cho tác vụ đã cho sẽ được tải..Nếu không được cung cấp, tokenizer mặc định cho
modelđã cho sẽ được tải (nếu nó là một chuỗi). Nếumodelkhông được chỉ định hoặc không phải là một chuỗi, thì tokenizer mặc định choconfigsẽ được tải (nếu nó là một chuỗi). Tuy nhiên, nếuconfigcũng không được cung cấp hoặc không phải là một chuỗi, thì tokenizer mặc định chotaskđã cho sẽ được tải. - feature_extractor (
strhoặc FeatureExtractionMixin, tùy chọn) — Bộ trích xuất đặc trưng sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đây có thể là định danh model hoặc một bộ trích xuất đặc trưng được huấn luyện trước, kế thừa từ FeatureExtractionMixin. Các bộ trích xuất đặc trưng được sử dụng cho các model phi NLP, chẳng hạn như model Speech hoặc Vision, cũng như các model đa phương thức. Các model đa phương thức cũng sẽ yêu cầu truyền vào một tokenizer. Nếu không được cung cấp, bộ trích xuất đặc trưng mặc định cho model đã cho sẽ được tải (nếu nó là một chuỗi). Nếu model không được chỉ định hoặc không phải là chuỗi, thì bộ trích xuất đặc trưng mặc định cho config sẽ được tải (nếu nó là một chuỗi). Tuy nhiên, nếu config cũng không được cung cấp hoặc không phải là chuỗi, thì bộ trích xuất đặc trưng mặc định cho tác vụ đã cho sẽ được tải..Feature extractors được sử dụng cho các mô hình không phải NLP, chẳng hạn như mô hình Speech hoặc Vision cũng như các mô hình đa phương tiện. Các mô hình đa phương tiện cũng sẽ yêu cầu truyền vào một tokenizer.
Nếu không được cung cấp, bộ trích xuất đặc trưng mặc định cho
modelđã cho sẽ được tải (nếu nó là một chuỗi). Nếumodelkhông được chỉ định hoặc không phải là một chuỗi, thì bộ trích xuất đặc trưng mặc định choconfigsẽ được tải (nếu nó là một chuỗi). Tuy nhiên, nếuconfigcũng không được cung cấp hoặc không phải là một chuỗi, thì bộ trích xuất đặc trưng mặc định chotaskđã cho sẽ được tải. - image_processor (
strhoặc BaseImageProcessor, tuỳ chọn) — Bộ xử lý ảnh sẽ được pipeline sử dụng để tiền xử lý ảnh cho model. Đây có thể là một định danh model hoặc một bộ xử lý ảnh thực kế thừa từ BaseImageProcessor. Bộ xử lý ảnh được sử dụng cho các model Vision và model đa phương thức yêu cầu đầu vào là ảnh. Các model đa phương thức cũng sẽ yêu cầu truyền vào một tokenizer. Nếu không được cung cấp, bộ xử lý ảnh mặc định cho model đã cho sẽ được tải (nếu nó là một chuỗi). Nếu model không được chỉ định hoặc không phải là chuỗi, thì bộ xử lý ảnh mặc định cho config sẽ được tải (nếu nó là một chuỗi)..Bộ xử lý hình ảnh được sử dụng cho các mô hình Thị giác và các mô hình đa phương thức yêu cầu đầu vào là hình ảnh. Các mô hình đa phương thức cũng sẽ cần truyền vào một bộ phân từ.
Nếu không được cung cấp, bộ xử lý ảnh mặc định cho
modelđã cho sẽ được tải (nếu nó là một chuỗi). Nếumodelkhông được chỉ định hoặc không phải là một chuỗi, thì bộ xử lý ảnh mặc định choconfigsẽ được tải (nếu nó là một chuỗi). - processor (
strhoặc ProcessorMixin, tùy chọn) — Bộ xử lý sẽ được pipeline sử dụng để tiền xử lý dữ liệu cho model. Đây có thể là định danh model hoặc một bộ xử lý thực tế kế thừa từ ProcessorMixin. Các bộ xử lý được sử dụng cho các model đa phương thức yêu cầu đầu vào đa phương thức, chẳng hạn như một model yêu cầu cả đầu vào văn bản và hình ảnh. Nếu không được cung cấp, bộ xử lý mặc định cho model đã cho sẽ được tải (nếu nó là chuỗi). Nếu model không được chỉ định hoặc không phải là chuỗi, thì bộ xử lý mặc định cho config sẽ được tải (nếu nó là chuỗi)..Processors được sử dụng cho các mô hình đa phương thức yêu cầu đầu vào đa phương thức, chẳng hạn như một mô hình yêu cầu cả đầu vào văn bản và hình ảnh.
Nếu không được cung cấp, bộ xử lý mặc định cho
modelđã cho sẽ được tải (nếu nó là một chuỗi). Nếumodelkhông được chỉ định hoặc không phải là một chuỗi, thì bộ xử lý mặc định choconfigsẽ được tải (nếu nó là một chuỗi). - revision (
str, tùy chọn, mặc định là"main") — Khi truyền tên tác vụ hoặc chuỗi định danh mô hình: Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ hoặc id commit, vì chúng tôi sử dụng hệ thống dựa trên git để lưu trữ các mô hình và các sản phẩm khác trên huggingface.co, do đórevisioncó thể là bất kỳ định danh nào được git cho phép. - use_fast (
bool, tùy chọn, mặc định làTrue) — Có sử dụng Fast tokenizer nếu có thể (một PreTrainedTokenizerFast) hay không. - token (
strhoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue, sẽ sử dụng token được tạo ra khi chạyhf auth login. - device (
inthoặcstrhoặctorch.device, tùy chọn) — Xác định thiết bị (vd.,"cpu","cuda:1","mps", hoặc một GPU ordinal rank như1) mà pipeline này sẽ được cấp phát. Nếu không được đặt, pipeline sẽ tự động được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào khả dụng; mô hình sẽ được di chuyển đến đó cho bạn. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU. Không thể dùng cùng vớidevice_map. - device_map (
strhoặcdict[str, Union[int, str, torch.device], tuỳ chọn) — Được gửi trực tiếp dưới dạngmodel_kwargs(chỉ là một lối tắt đơn giản hơn). Khiacceleratethư việndevice_map="auto"có mặt, hãy đặtdevice_mapđể tự động tính toán được tối ưu nhất (xem để biết thêm thông tin).Không sử dụng
device_mapVÀdevicecùng lúc vì chúng sẽ xung đột - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu. Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - trust_remote_code (
bool, tùy chọn, mặc định làFalse) — Có cho phép mã tùy chỉnh được định nghĩa trên Hub trong các tệp modeling, configuration, tokenization hoặc thậm chí pipeline của chúng hay không. Chỉ nên đặt tùy chọn này thànhTruecho các kho bạn tin tưởng và đã đọc mã, vì nó sẽ thực thi mã có trên Hub trên máy cục bộ của bạn. - model_kwargs (
dict[str, Any], tùy chọn) — Từ điển bổ sung các đối số từ khóa được truyền đến hàmfrom_pretrained(..., **model_kwargs)của model. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến init của pipeline cụ thể (xem tài liệu của lớp pipeline tương ứng để biết các giá trị có thể).
Trả về
Một pipeline phù hợp cho tác vụ.
Phương thức nhà máy tiện ích để xây dựng một Pipeline.
Một pipeline bao gồm:
- Một hoặc nhiều thành phần để tiền xử lý đầu vào của mô hình, chẳng hạn như tokenizer, image_processor, feature_extractor hoặc processor.
- Một mô hình tạo ra các dự đoán từ các đầu vào.
- Các bước xử lý hậu kỳ tùy chọn để tinh chỉnh đầu ra của mô hình, cũng có thể được xử lý bởi các bộ xử lý.
While there are such optional arguments as `tokenizer`, `feature_extractor`, `image_processor`, and `processor`, they shouldn't be specified all at once. If these components are not provided, `pipeline` will try to load required ones automatically. In case you want to provide these components explicitly, please refer to a specific pipeline in order to get more details regarding what components are required.
Ví dụ:
>>> from transformers import pipeline, AutoModelForTokenClassification, AutoTokenizer
>>> # Sentiment analysis pipeline
>>> analyzer = pipeline("sentiment-analysis")
>>> # Named entity recognition pipeline, passing in a specific model and tokenizer
>>> model = AutoModelForTokenClassification.from_pretrained("dbmdz/bert-large-cased-finetuned-conll03-english")
>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> recognizer = pipeline("ner", model=model, tokenizer=tokenizer)Đóng gói hàng loạt Pipeline
Tất cả các pipeline đều có thể sử dụng batching. Điều này sẽ hoạt động
mỗi khi pipeline sử dụng khả năng streaming của nó (tức là khi truyền vào các danh sách hoặc Dataset hoặc generator).
from transformers import pipeline
from transformers.pipelines.pt_utils import KeyDataset
import datasets
dataset = datasets.load_dataset("stanfordnlp/imdb", name="plain_text", split="unsupervised")
pipe = pipeline("text-classification", device=0)
for out in pipe(KeyDataset(dataset, "text"), batch_size=8, truncation="only_first"):
print(out)
# [{'label': 'POSITIVE', 'score': 0.9998743534088135}]
# Exactly the same output as before, but the content are passed
# as batches to the modelTuy nhiên, điều này không tự động mang lại lợi thế về hiệu suất. Nó có thể là tăng tốc 10 lần hoặc chậm đi 5 lần tùy thuộc vào phần cứng, dữ liệu và mô hình thực tế được sử dụng.
Ví dụ chủ yếu là tăng tốc:
from transformers import pipeline
from torch.utils.data import Dataset
from tqdm.auto import tqdm
pipe = pipeline("text-classification", device=0)
class MyDataset(Dataset):
def __len__(self):
return 5000
def __getitem__(self, i):
return "This is a test"
dataset = MyDataset()
for batch_size in [1, 8, 64, 256]:
print("-" * 30)
print(f"Streaming batch_size={batch_size}")
for out in tqdm(pipe(dataset, batch_size=batch_size), total=len(dataset)):
pass# On GTX 970 ------------------------------ Streaming no batching 100%|██████████████████████████████████████████████████████████████████████| 5000/5000 [00:26<00:00, 187.52it/s] ------------------------------ Streaming batch_size=8 100%|█████████████████████████████████████████████████████████████████████| 5000/5000 [00:04<00:00, 1205.95it/s] ------------------------------ Streaming batch_size=64 100%|█████████████████████████████████████████████████████████████████████| 5000/5000 [00:02<00:00, 2478.24it/s] ------------------------------ Streaming batch_size=256 100%|█████████████████████████████████████████████████████████████████████| 5000/5000 [00:01<00:00, 2554.43it/s] (diminishing returns, saturated the GPU)
Ví dụ về trường hợp chủ yếu là làm chậm tốc độ:
class MyDataset(Dataset):
def __len__(self):
return 5000
def __getitem__(self, i):
if i % 64 == 0:
n = 100
else:
n = 1
return "This is a test" * nĐây là một câu rất dài, thỉnh thoảng xuất hiện so với các câu khác. Trong trường hợp đó, toàn bộ batch sẽ cần có độ dài 400 token, do đó toàn bộ batch sẽ là [64, 400] thay vì [64, 4], dẫn đến sự chậm lại đáng kể. Tệ hơn nữa, với các batch lớn hơn, chương trình đơn giản là bị crash.
------------------------------
Streaming no batching
100%|█████████████████████████████████████████████████████████████████████| 1000/1000 [00:05<00:00, 183.69it/s]
------------------------------
Streaming batch_size=8
100%|█████████████████████████████████████████████████████████████████████| 1000/1000 [00:03<00:00, 265.74it/s]
------------------------------
Streaming batch_size=64
100%|██████████████████████████████████████████████████████████████████████| 1000/1000 [00:26<00:00, 37.80it/s]
------------------------------
Streaming batch_size=256
0%| | 0/1000 [00:00<?, ?it/s]
Traceback (most recent call last):
File "/home/nicolas/src/transformers/test.py", line 42, in <module>
for out in tqdm(pipe(dataset, batch_size=256), total=len(dataset)):
....
q = q / math.sqrt(dim_per_head) # (bs, n_heads, q_length, dim_per_head)
RuntimeError: CUDA out of memory. Tried to allocate 376.00 MiB (GPU 0; 3.95 GiB total capacity; 1.72 GiB already allocated; 354.88 MiB free; 2.46 GiB reserved in total by PyTorch)Không có giải pháp (tổng quát) tốt cho vấn đề này, và kết quả có thể khác nhau tùy thuộc vào trường hợp sử dụng của bạn. Nguyên tắc chung:
Đối với người dùng, một quy tắc chung là:
Đo hiệu năng trên tải của bạn, với phần cứng của bạn. Đo, đo và tiếp tục đo. Các con số thực tế là cách duy nhất để đi.
Nếu bạn bị giới hạn về độ trễ (sản phẩm trực tiếp đang thực hiện suy luận), đừng nhóm (batch).
Nếu bạn đang sử dụng CPU, đừng batch.
Nếu bạn đang sử dụng throughput (bạn muốn chạy mô hình của mình trên một lượng lớn dữ liệu tĩnh), trên GPU, thì:
- Nếu bạn không có ý tưởng nào về kích thước của sequence_length (dữ liệu “tự nhiên”), mặc định là không batch, hãy đo lường và thử nghiệm thêm vào, đồng thời thêm các kiểm tra OOM để khôi phục khi nó thất bại (và nó sẽ thất bại ở một thời điểm nào đó nếu bạn không kiểm soát sequence_length.)
- Nếu sequence_length của bạn rất đều đặn, thì việc batching có khả năng trở nên RẤT thú vị, hãy đo lường và tăng dần cho đến khi gặp OOM.
- GPU càng lớn thì việc batch càng có xu hướng trở nên thú vị hơn
Ngay khi bạn bật batching, hãy đảm bảo rằng bạn có thể xử lý OOM một cách ổn thỏa.
Đóng gói theo lô chunk cho Pipeline
zero-shot-classification và question-answering có phần đặc thù ở chỗ một đầu vào duy nhất có thể tạo ra nhiều lần chạy forward của mô hình. Trong điều kiện bình thường, điều này sẽ gây ra vấn đề với tham số batch_size.
Để khắc phục vấn đề này, cả hai pipeline này đều có một số điểm đặc thù, chúng là ChunkPipeline thay vì Pipeline thông thường. Tóm lại:
preprocessed = pipe.preprocess(inputs) model_outputs = pipe.forward(preprocessed) outputs = pipe.postprocess(model_outputs)
Bây giờ trở thành:
all_model_outputs = []
for preprocessed in pipe.preprocess(inputs):
model_outputs = pipe.forward(preprocessed)
all_model_outputs.append(model_outputs)
outputs = pipe.postprocess(all_model_outputs)Điều này nên hoàn toàn trong suốt với mã của bạn vì các pipeline được sử dụng theo cùng một cách.
Đây là cách nhìn đơn giản hóa, vì pipeline có thể tự động xử lý batch cho bạn! Nghĩa là bạn không cần lo lắng về việc các input của mình thực sự sẽ kích hoạt bao nhiêu lần forward pass, bạn có thể tối ưu hóa batch_size độc lập với các input. Các lưu ý từ phần trước vẫn áp dụng.
Suy luận FP16 của Pipeline
Các mô hình có thể được chạy ở FP16, điều này có thể nhanh hơn đáng kể trên GPU trong khi tiết kiệm bộ nhớ. Hầu hết các mô hình sẽ không bị suy giảm hiệu suất đáng kể từ điều này. Mô hình càng lớn thì khả năng bị ảnh hưởng càng thấp.
Để bật suy luận FP16, bạn chỉ cần truyền dtype=torch.float16 hoặc dtype='float16' vào bộ khởi tạo pipeline. Lưu ý rằng điều này chỉ hoạt động với các mô hình có backend PyTorch. Đầu vào của bạn sẽ được chuyển đổi sang FP16 bên trong.
Mã tùy chỉnh cho Pipeline
Nếu bạn muốn ghi đè lên một pipeline cụ thể.
Đừng ngần ngại tạo một issue cho tác vụ bạn đang thực hiện, mục tiêu của pipeline là dễ sử dụng và hỗ trợ hầu hết các trường hợp, vì vậy transformers có thể hỗ trợ được use case của bạn.
Nếu bạn muốn thử đơn giản, bạn có thể:
- Tạo lớp con cho pipeline bạn chọn
class MyPipeline(TextClassificationPipeline):
def postprocess():
# Your code goes here
scores = scores * 100
# And here
my_pipeline = MyPipeline(model=model, tokenizer=tokenizer, ...)
# or if you use *pipeline* function, then:
my_pipeline = pipeline(model="xxxx", pipeline_class=MyPipeline)Điều đó sẽ cho phép bạn thực hiện tất cả các mã tùy chỉnh mà bạn muốn.
Triển khai một pipeline
Âm thanh
Các pipeline có sẵn cho các tác vụ âm thanh bao gồm những mục sau.
AudioClassificationPipeline
lớp transformers.AudioClassificationPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- feature_extractor (SequenceFeatureExtractor) — Bộ trích xuất đặc trưng sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ SequenceFeatureExtractor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phân loại âm thanh sử dụng bất kỳ AutoModelForAudioClassification nào. Pipeline này dự đoán lớp của một dạng sóng thô hoặc một tệp âm thanh. Trong trường hợp là tệp âm thanh, cần cài đặt ffmpeg để hỗ trợ nhiều định dạng âm thanh khác nhau.
Ví dụ:
>>> from transformers import pipeline
>>> classifier = pipeline(model="superb/wav2vec2-base-superb-ks")
>>> classifier("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
[{'score': 0.997, 'label': '_unknown_'}, {'score': 0.002, 'label': 'left'}, {'score': 0.0, 'label': 'yes'}, {'score': 0.0, 'label': 'down'}, {'score': 0.0, 'label': 'stop'}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "audio-classification".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( inputs: numpy.ndarray | bytes | str | dict**kwargs: Any ) → A list of dict with the following keys
Tham số
- inputs (
np.ndarrayhoặcbyteshoặcstrhoặcdict) — inputs là một trong các dạng sau:strlà tên tệp của tệp âm thanh, tệp sẽ được đọc ở tốc độ lấy mẫu chính xác để lấy dạng sóng bằng ffmpeg. Điều này yêu cầu ffmpeg phải được cài đặt trên hệ thống.bytesđược cho là nội dung của một tệp âm thanh và được ffmpeg diễn giải theo cách tương tự.- (
np.ndarraycó shape (n, ) với kiểunp.float32hoặcnp.float64) Âm thanh thô ở tốc độ lấy mẫu chính xác (không có kiểm tra nào khác sẽ được thực hiện) dictform có thể được dùng để truyền âm thanh thô được lấy mẫu ởsampling_ratetùy ý và để pipeline này thực hiện việc lấy mẫu lại. dict phải ở định dạng{"sampling_rate": int, "raw": np.array}hoặc{"sampling_rate": int, "array": np.array}, trong đó key"raw"hoặc"array"được dùng để chỉ waveform âm thanh thô.
- top_k (
int, tùy chọn, mặc định là None) — Số lượng nhãn hàng đầu sẽ được trả về bởi pipeline. Nếu số lượng được cung cấp làNonehoặc lớn hơn số lượng nhãn có sẵn trong cấu hình của model, giá trị mặc định sẽ là số lượng nhãn. - function_to_apply (
str, optional, mặc định là “softmax”) — Hàm cần áp dụng cho đầu ra của mô hình. Mặc định, pipeline sẽ áp dụng hàm softmax cho đầu ra của mô hình. Các tùy chọn hợp lệ: [“softmax”, “sigmoid”, “none”]. Lưu ý rằng việc truyềnNonecó sẵn trong Python sẽ mặc định thành “softmax”, do đó bạn cần truyền chuỗi “none” để tắt mọi xử lý sau.
Trả về
Một danh sách dict với các khóa sau
- label (
str) — Nhãn được dự đoán. - score (
float) — Xác suất tương ứng.
Phân loại chuỗi được đưa vào dưới dạng đầu vào. Xem tài liệu AutomaticSpeechRecognitionPipeline để biết thêm thông tin.
AutomaticSpeechRecognitionPipeline
lớp transformers.AutomaticSpeechRecognitionPipeline
< source >( model: PreTrainedModelfeature_extractor: typing.Union[ForwardRef('SequenceFeatureExtractor'), str, NoneType] = Nonetokenizer: transformers.tokenization_python.PythonBackend | None = Nonedecoder: typing.Union[ForwardRef('BeamSearchDecoderCTC'), str, NoneType] = Nonedevice: typing.Union[int, ForwardRef('torch.device'), NoneType] = None**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- feature_extractor (SequenceFeatureExtractor, optional) — Bộ trích xuất đặc trưng sẽ được pipeline sử dụng để mã hóa waveform cho model.
- tokenizer (PreTrainedTokenizer, optional) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- decoder (
pyctcdecode.BeamSearchDecoderCTC, tùy chọn) — BeamSearchDecoderCTC của PyCTCDecode có thể được truyền vào để giải mã có hỗ trợ từ mô hình ngôn ngữ. Xem Wav2Vec2ProcessorWithLM để biết thêm thông tin. - device (Union[
int,torch.device], tùy chọn) — Chỉ số thiết bị cho hỗ trợ CPU/GPU. Đặt giá trị này thànhNonesẽ sử dụng CPU, một số dương sẽ chạy mô hình trên id thiết bị CUDA tương ứng.
Pipeline nhằm mục đích trích xuất văn bản được nói có trong một số tệp âm thanh.
Đầu vào có thể là dạng sóng thô hoặc một tệp âm thanh. Trong trường hợp là tệp âm thanh, cần cài đặt ffmpeg để hỗ trợ nhiều định dạng âm thanh khác nhau
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh này trong tệp cấu hình của nó (generation_config.json), các giá trị mặc định sau sẽ được sử dụng:
- max_new_tokens: 256
- num_beams: 5
Ví dụ:
>>> from transformers import pipeline
>>> transcriber = pipeline(model="openai/whisper-base")
>>> transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
{'text': ' He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered flour-fatten sauce.'}Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
__call__
< source >( inputs: numpy.ndarray | bytes | str | dict**kwargs: Any ) → Dict
Tham số
- inputs (
np.ndarrayhoặcbyteshoặcstrhoặcdict) — inputs là một trong các dạng sau:strlà tên tệp của một tệp âm thanh cục bộ hoặc địa chỉ URL công khai để tải xuống tệp âm thanh. Tệp sẽ được đọc ở tốc độ lấy mẫu chính xác để lấy dạng sóng bằng ffmpeg. Điều này yêu cầu ffmpeg phải được cài đặt trên hệ thống.bytesđược cho là nội dung của một tệp âm thanh và được ffmpeg diễn giải theo cách tương tự.- (
np.ndarraycó shape (n, ) với kiểunp.float32hoặcnp.float64) Âm thanh thô ở tốc độ lấy mẫu chính xác (không có kiểm tra nào khác sẽ được thực hiện) dictform có thể được dùng để truyền âm thanh thô được lấy mẫu ởsampling_ratetùy ý và để pipeline này thực hiện việc lấy mẫu lại. Dict phải ở định dạng{"sampling_rate": int, "raw": np.array}với tùy chọn"stride": (left: int, right: int)để yêu cầu pipeline bỏ qualeftmẫu đầu tiên vàrightmẫu cuối cùng khi giải mã (nhưng vẫn được dùng ở giai đoạn suy luận để cung cấp thêm ngữ cảnh cho mô hình). Chỉ dùngstridevới các mô hình CTC.
- return_timestamps (tuỳ chọn,
strhoặcbool) — Chỉ khả dụng cho các mô hình CTC thuần (Wav2Vec2, HuBERT, v.v.) và mô hình Whisper. Không khả dụng cho các mô hình sequence-to-sequence khác.Đối với các mô hình CTC, dấu thời gian có thể ở một trong hai định dạng:
"char": pipeline sẽ trả về mốc thời gian cùng với văn bản cho từng ký tự trong văn bản. Ví dụ, nếu bạn nhận được[{"text": "h", "timestamp": (0.5, 0.6)}, {"text": "i", "timestamp": (0.7, 0.9)}], điều đó có nghĩa là mô hình dự đoán rằng chữ “h” được phát ra sau0.5và trước0.6giây."word": pipeline sẽ trả về mốc thời gian cùng với văn bản cho từng từ trong văn bản. Ví dụ, nếu bạn nhận được[{"text": "hi ", "timestamp": (0.5, 0.9)}, {"text": "there", "timestamp": (1.0, 1.5)}], điều đó có nghĩa là mô hình dự đoán rằng từ “hi” được phát ra sau0.5và trước0.9giây.
Đối với mô hình Whisper, dấu thời gian có thể có một trong hai định dạng:
"word": giống như trên đối với mốc thời gian CTC ở cấp độ từ. Mốc thời gian cấp độ từ được dự đoán thông qua thuật toán dynamic-time warping (DTW), một phương pháp xấp xỉ mốc thời gian cấp độ từ bằng cách kiểm tra các trọng số cross-attention.True: pipeline sẽ trả về mốc thời gian cùng với văn bản cho các đoạn từ trong văn bản. Ví dụ, nếu bạn nhận được[{"text": " Hi there!", "timestamp": (0.5, 1.5)}], điều đó có nghĩa là mô hình dự đoán rằng đoạn “Hi there!” được phát ra sau0.5và trước1.5giây. Lưu ý rằng một đoạn văn bản đề cập đến một chuỗi gồm một hoặc nhiều từ, chứ không phải các từ riêng lẻ như với mốc thời gian cấp từ.
- generate_kwargs (
dict, tùy chọn) — Từ điển chứa các tham số tùy chỉnh chogenerate_configđể sử dụng trong lệnh gọi generate. Để xem tổng quan đầy đủ về generate, hãy xem hướng dẫn sau.
Trả về
Dict
Một từ điển có các khóa sau:
- text (
str): Văn bản được nhận dạng. - chunks (tùy chọn,
list[Dict]) Khi sử dụngreturn_timestamps,chunkssẽ trở thành một danh sách chứa tất cả các đoạn văn bản khác nhau do mô hình xác định, ví dụ*[{"text": "hi ", "timestamp": (0.5, 0.9)}, {"text": "there", "timestamp": (1.0, 1.5)}]. Toàn bộ văn bản gốc có thể được khôi phục xấp xỉ bằng cách thực hiện"".join(chunk["text"] for chunk in output["chunks"]).
Chuyển đổi chuỗi âm thanh được đưa vào dưới dạng đầu vào thành văn bản. Xem tài liệu AutomaticSpeechRecognitionPipeline để biết thêm thông tin.
TextToAudioPipeline
lớp transformers.TextToAudioPipeline
< source >( *argsvocoder = Nonesampling_rate = Nonenoise_scheduler = None**kwargs )
Pipeline tạo audio từ văn bản sử dụng bất kỳ AutoModelForTextToWaveform hoặc AutoModelForTextToSpectrogram. Pipeline này tạo ra tệp audio từ văn bản đầu vào và các đầu vào điều kiện tùy chọn khác.
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh trong generation_config.json, các giá trị mặc định từ generation.configuration_utils.py._get_default_generation_params() sẽ được sử dụng.
- max_new_tokens: 256
Ví dụ:
>>> from transformers import pipeline
>>> pipe = pipeline(model="suno/bark-small")
>>> output = pipe("Hey it's HuggingFace on the phone!")
>>> audio = output["audio"]
>>> sampling_rate = output["sampling_rate"]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Bạn có thể chỉ định các tham số được truyền cho mô hình bằng cách sử dụng
TextToAudioPipeline.__call__.forward_paramshoặcTextToAudioPipeline.__call__.generate_kwargs.Ví dụ:
>>> from transformers import pipeline >>> music_generator = pipeline(task="text-to-audio", model="facebook/musicgen-small") >>> # diversify the music generation by adding randomness with a high temperature and set a maximum music length >>> generate_kwargs = { ... "do_sample": True, ... "temperature": 0.7, ... "max_new_tokens": 35, ... } >>> outputs = music_generator("Techno music with high melodic riffs", generate_kwargs=generate_kwargs)
Pipeline này hiện có thể được nạp từ pipeline() bằng cách sử dụng các định danh tác vụ sau: "text-to-speech" hoặc "text-to-audio".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( text_inputs**forward_params ) → AudioOutput or a list of AudioOutput, which is a TypedDict with two keys
Tham số
- text_inputs (
str,list[str],ChatType, hoặclist[ChatType]) — Một hoặc nhiều văn bản để tạo. Nếu truyền vào chuỗi hoặc danh sách các chuỗi, pipeline này sẽ tạo ra văn bản tương ứng. Ngoài ra, có thể truyền vào một “chat” dưới dạng danh sách các dict có các khóa “role” và “content”, hoặc một danh sách các chat như vậy. Khi truyền vào các chat, chat template của mô hình sẽ được sử dụng để định dạng chúng trước khi truyền vào mô hình. - forward_params (
dict, tùy chọn) — Các tham số được truyền đến phương thức sinh/forward của model.forward_paramsluôn được truyền đến model bên dưới. - generate_kwargs (
dict, tùy chọn) — Từ điển chứa các tham số tùy chỉnh chogenerate_configđể sử dụng trong lệnh gọi generate. Để có cái nhìn tổng quan đầy đủ về generate, hãy xem hướng dẫn sau.generate_kwargschỉ được truyền cho model bên dưới nếu model đó là model sinh, và có độ ưu tiên cao hơnforward_params.
Trả về
AudioOutput hoặc một danh sách AudioOutput, là một TypedDict với hai khóa
- audio (
np.ndarraycó hình dạng(nb_channels, audio_length)) — Dạng sóng âm thanh được tạo ra. - sampling_rate (
int) — Tần số lấy mẫu của dạng sóng âm thanh được tạo ra.
Tạo giọng nói/âm thanh từ các đầu vào. Xem tài liệu TextToAudioPipeline để biết thêm thông tin.
ZeroShotAudioClassificationPipeline
lớp transformers.ZeroShotAudioClassificationPipeline
< source >( **kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- feature_extractor (SequenceFeatureExtractor) — Bộ trích xuất đặc trưng sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ SequenceFeatureExtractor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phân loại âm thanh zero shot sử dụng ClapModel. Pipeline này dự đoán lớp của một âm thanh khi bạn cung cấp một âm thanh và một tập hợp các candidate_labels.
Mặc định
hypothesis_templatelà :"This is a sound of {}.". Hãy đảm bảo bạn cập nhật nó cho mục đích sử dụng của mình.
Ví dụ:
>>> from transformers import pipeline
>>> from datasets import load_dataset
>>> dataset = load_dataset("ashraq/esc50")
>>> audio = next(iter(dataset["train"]["audio"]))["array"]
>>> classifier = pipeline(task="zero-shot-audio-classification", model="laion/clap-htsat-unfused")
>>> classifier(audio, candidate_labels=["Sound of a dog", "Sound of vacuum cleaner"])
[{'score': 0.9996, 'label': 'Sound of a dog'}, {'score': 0.0004, 'label': 'Sound of vacuum cleaner'}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial về pipeline. Pipeline phân loại âm thanh này hiện có thể được tải từ pipeline() bằng cách sử dụng định danh tác vụ sau: "zero-shot-audio-classification". Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( audios: numpy.ndarray | bytes | str | dict**kwargs: Any )
Tham số
- audios (
str,list[str],np.arrayhoặclist[np.array]) — Pipeline xử lý ba loại đầu vào:- Chuỗi chứa liên kết http trỏ đến một tệp âm thanh
- Chuỗi chứa đường dẫn cục bộ đến tệp âm thanh
- Âm thanh được nạp vào numpy
- candidate_labels (
list[str]) — Các nhãn ứng viên cho âm thanh này. Chúng sẽ được định dạng bằng hypothesis_template. - hypothesis_template (
str, tuỳ chọn, mặc định là"This is a sound of {}") — Định dạng được sử dụng cùng với candidate_labels để thực hiện phân loại âm thanh bằng cách thay thế phần tử thay thế bằng candidate_labels. Truyền ”{}” nếu candidate_labels đã được định dạng sẵn.
Gán nhãn cho âm thanh được truyền vào dưới dạng đầu vào.
Thị giác máy tính
Các pipeline có sẵn cho các tác vụ thị giác máy tính bao gồm những mục sau.
DepthEstimationPipeline
lớp transformers.DepthEstimationPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline ước lượng độ sâu sử dụng bất kỳ AutoModelForDepthEstimation nào. Pipeline này dự đoán độ sâu của một hình ảnh.
Ví dụ:
>>> from transformers import pipeline
>>> depth_estimator = pipeline(task="depth-estimation", model="LiheYoung/depth-anything-base-hf")
>>> output = depth_estimator("http://images.cocodataset.org/val2017/000000039769.jpg")
>>> # This is a tensor with the values being the depth expressed in meters for each pixel
>>> output["predicted_depth"].shape
torch.Size([1, 384, 384])Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline ước lượng độ sâu này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "depth-estimation".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( inputs: typing.Union[str, list[str], ForwardRef('Image.Image'), list['Image.Image']]**kwargs: Any )
Tham số
- inputs (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh, sau đó phải được truyền dưới dạng chuỗi. Các hình ảnh trong một lô phải cùng một định dạng: tất cả là liên kết http, tất cả là đường dẫn cục bộ, hoặc tất cả là hình ảnh PIL.
- parameters (
Dict, tùy chọn) — Một từ điển ánh xạ tên đối số tới giá trị tham số, để kiểm soát hành vi của pipeline. Tham số duy nhất có sẵn hiện tại làtimeout, tức là khoảng thời gian, tính bằng giây, mà pipeline sẽ chờ trước khi từ bỏ việc tải xuống một hình ảnh. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Dự đoán độ sâu của hình ảnh được truyền vào dưới dạng đầu vào.
ImageClassificationPipeline
lớp transformers.ImageClassificationPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản. - function_to_apply (
str, tuỳ chọn, mặc định là"default") — Hàm cần áp dụng cho đầu ra của mô hình để lấy điểm. Chấp nhận bốn giá trị khác nhau:"default": nếu mô hình có một nhãn duy nhất, sẽ áp dụng hàm sigmoid lên đầu ra. Nếu mô hình có nhiều nhãn, sẽ áp dụng hàm softmax lên đầu ra."sigmoid": Áp dụng hàm sigmoid lên đầu ra."softmax": Áp dụng hàm softmax lên đầu ra."none": Không áp dụng bất kỳ hàm nào lên đầu ra.
Pipeline phân loại hình ảnh sử dụng bất kỳ AutoModelForImageClassification nào. Pipeline này dự đoán lớp của một hình ảnh.
Ví dụ:
>>> from transformers import pipeline
>>> classifier = pipeline(model="microsoft/beit-base-patch16-224-pt22k-ft22k")
>>> classifier("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
[{'score': 0.442, 'label': 'macaw'}, {'score': 0.088, 'label': 'popinjay'}, {'score': 0.075, 'label': 'parrot'}, {'score': 0.073, 'label': 'parodist, lampooner'}, {'score': 0.046, 'label': 'poll, poll_parrot'}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline phân loại hình ảnh này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "image-classification".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( inputs: typing.Union[str, list[str], ForwardRef('Image.Image'), list['Image.Image']]**kwargs: Any )
Tham số
- inputs (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh, sau đó phải được truyền dưới dạng chuỗi. Các hình ảnh trong một lô phải cùng một định dạng: tất cả là liên kết http, tất cả là đường dẫn cục bộ, hoặc tất cả là hình ảnh PIL.
- function_to_apply (
str, tuỳ chọn, mặc định là"default") — Hàm cần áp dụng cho đầu ra của mô hình để lấy điểm. Chấp nhận bốn giá trị khác nhau:Nếu đối số này không được chỉ định, thì các hàm sau sẽ được áp dụng tùy theo số lượng nhãn:
- Nếu mô hình có một nhãn duy nhất, hàm sigmoid sẽ được áp dụng lên đầu ra.
- Nếu mô hình có nhiều nhãn, hàm softmax sẽ được áp dụng cho đầu ra.
Các giá trị có thể có là:
"sigmoid": Áp dụng hàm sigmoid lên đầu ra."softmax": Áp dụng hàm softmax lên đầu ra."none": Không áp dụng bất kỳ hàm nào lên đầu ra.
- top_k (
int, tùy chọn, mặc định là 5) — Số lượng nhãn hàng đầu sẽ được trả về bởi pipeline. Nếu số lượng được cung cấp lớn hơn số nhãn có sẵn trong cấu hình của model, giá trị mặc định sẽ là số lượng nhãn đó. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Gán nhãn cho hình ảnh được truyền vào dưới dạng đầu vào.
ImageSegmentationPipeline
lớp transformers.ImageSegmentationPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phân đoạn hình ảnh sử dụng bất kỳ AutoModelForXXXSegmentation nào. Pipeline này dự đoán các mặt nạ của các đối tượng và lớp của chúng.
Ví dụ:
>>> from transformers import pipeline
>>> segmenter = pipeline(model="facebook/detr-resnet-50-panoptic")
>>> segments = segmenter("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
>>> len(segments)
2
>>> segments[0]["label"]
'bird'
>>> segments[1]["label"]
'bird'
>>> type(segments[0]["mask"]) # This is a black and white mask showing where is the bird on the original image.
<class 'PIL.Image.Image'>
>>> segments[0]["mask"].size
(768, 512)Pipeline phân đoạn ảnh này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "image-segmentation".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( inputs: typing.Union[str, ForwardRef('Image.Image'), list[str], list['Image.Image']]**kwargs: Any )
Tham số
- inputs (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết HTTP(S) trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh. Các hình ảnh trong một lô phải cùng một định dạng: tất cả là liên kết HTTP(S), tất cả là đường dẫn cục bộ, hoặc tất cả là hình ảnh PIL.
- subtask (
str, optional) — Nhiệm vụ phân đoạn cần thực hiện, chọn [semantic,instancevàpanoptic] tùy thuộc vào khả năng của mô hình. Nếu không được đặt, pipeline sẽ cố gắng xác định theo thứ tự sau:panoptic,instance,semantic. - threshold (
float, tùy chọn, mặc định là 0.9) — Ngưỡng xác suất để lọc các mặt nạ dự đoán. - mask_threshold (
float, tùy chọn, mặc định là 0.5) — Ngưỡng sử dụng khi chuyển các mặt nạ dự đoán thành giá trị nhị phân. - overlap_mask_area_threshold (
float, tùy chọn, mặc định là 0.5) — Ngưỡng chồng lấn của mask để loại bỏ các phân đoạn nhỏ, không liên tục. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Thực hiện phân đoạn (phát hiện mặt nạ & lớp) trong ảnh được truyền vào dưới dạng đầu vào.
KeypointMatchingPipeline
Pipeline khớp điểm chính (keypoint) sử dụng bất kỳ AutoModelForKeypointMatching nào. Pipeline này khớp các điểm chính giữa hai hình ảnh.
__call__
< source >( inputs: list[collections.abc.Sequence[typing.Union[ForwardRef('Image.Image'), str]]] | collections.abc.Sequence[typing.Union[ForwardRef('Image.Image'), str]]threshold: float = 0.0**kwargs: Any ) → Union[list[Match], list[list[Match]]]
Tham số
- inputs (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một cặp ảnh đơn lẻ hoặc một lô các cặp ảnh, trong đó lô này phải được truyền dưới dạng chuỗi. Các ảnh trong một lô phải cùng một định dạng: tất cả là liên kết http, tất cả là đường dẫn cục bộ, hoặc tất cả là ảnh PIL.
- threshold (
float, tuỳ chọn, mặc định là 0.0) — Ngưỡng sử dụng cho việc khớp điểm then chốt. Các điểm then chốt được khớp với điểm khớp thấp hơn sẽ bị lọc bỏ. Giá trị 0 có nghĩa là tất cả các điểm then chốt được khớp sẽ được trả về. - kwargs —
timeout (float, *optional*, defaults to None)The maximum time in seconds to wait for fetching images from the web. If None, no timeout is set and the call may block forever.
Trả về
Union[list[Match], list[list[Match]]]
Một danh sách các khớp hoặc một danh sách nếu một cặp ảnh đơn được cung cấp, hoặc các danh sách các khớp nếu một lô các cặp ảnh được cung cấp. Mỗi khớp là một từ điển chứa các khóa sau:
- keypoint_image_0 (
Keypoint): Điểm then chốt trong hình ảnh đầu tiên (tọa độ x, y). - keypoint_image_1 (
Keypoint): Điểm then chốt trong hình ảnh thứ hai (tọa độ x, y). - score (
float): Điểm khớp giữa hai điểm then chốt.
Tìm các điểm khớp giữa các điểm then chốt trong hai hình ảnh.
ObjectDetectionPipeline
lớp transformers.ObjectDetectionPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phát hiện đối tượng sử dụng bất kỳ AutoModelForObjectDetection nào. Pipeline này dự đoán các khung bao của các đối tượng và lớp của chúng.
Ví dụ:
>>> from transformers import pipeline
>>> detector = pipeline(model="facebook/detr-resnet-50")
>>> detector("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
[{'score': 0.997, 'label': 'bird', 'box': {'xmin': 69, 'ymin': 171, 'xmax': 396, 'ymax': 507}}, {'score': 0.999, 'label': 'bird', 'box': {'xmin': 398, 'ymin': 105, 'xmax': 767, 'ymax': 507}}]
>>> # x, y are expressed relative to the top left hand corner.Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline phát hiện đối tượng này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "object-detection".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( *args**kwargs )
Tham số
- inputs (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết HTTP(S) trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh. Các hình ảnh trong một lô phải cùng một định dạng: tất cả là liên kết HTTP(S), tất cả là đường dẫn cục bộ, hoặc tất cả là hình ảnh PIL.
- threshold (
float, tùy chọn, mặc định là 0.5) — Xác suất cần thiết để đưa ra dự đoán. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Phát hiện các đối tượng (hộp bao & lớp) trong ảnh được truyền vào dưới dạng đầu vào.
VideoClassificationPipeline
lớp transformers.VideoClassificationPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- video_processor (BaseVideoProcessor) — Bộ xử lý video sẽ được pipeline sử dụng để mã hóa dữ liệu video cho mô hình. Đối tượng này kế thừa từ BaseVideoProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phân loại video sử dụng bất kỳ AutoModelForVideoClassification nào. Pipeline này dự đoán lớp của một video.
Pipeline phân loại video này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "video-classification".
Xem danh sách các model khả dụng trên huggingface.co/models.
Pipeline hỗ trợ các mô hình sử dụng bộ xử lý ảnh (các mô hình video cũ như VideoMAE, ViViT và TimeSformer) hoặc bộ xử lý video (các mô hình mới hơn như VJEPA2). Khi cả hai đều có mặt, bộ xử lý video sẽ được ưu tiên; khi không tìm thấy bộ xử lý nào, pipeline sẽ gây ra lỗi.
__call__
< source >( inputs: str | list[str] | None**kwargs )
Tham số
- inputs (
str,list[str]) — Pipeline xử lý ba loại video:- Chuỗi chứa liên kết http trỏ đến một video
- Chuỗi chứa đường dẫn cục bộ đến một video
Pipeline nhận một video đơn hoặc một lô video, sau đó phải được truyền dưới dạng chuỗi. Các video trong một lô phải cùng định dạng: tất cả là liên kết http hoặc tất cả là đường dẫn cục bộ.
- top_k (
int, tùy chọn, mặc định là 5) — Số lượng nhãn hàng đầu sẽ được trả về bởi pipeline. Nếu số lượng được cung cấp lớn hơn số nhãn có sẵn trong cấu hình của model, giá trị mặc định sẽ là số lượng nhãn đó. - num_frames (
int, tùy chọn, mặc định làself.model.config.num_frames) — Số lượng khung hình được lấy mẫu từ video để chạy phân loại. Nếu không được cung cấp, sẽ mặc định là số lượng khung hình được chỉ định trong cấu hình mô hình. - frame_sampling_rate (
int, tùy chọn, mặc định là 1) — Tần suất lấy mẫu được sử dụng để chọn các khung hình từ video. Nếu không được cung cấp, giá trị mặc định sẽ là 1, tức là mọi khung hình sẽ được sử dụng. - function_to_apply(
str, optional, mặc định là “softmax”) — Hàm cần áp dụng cho đầu ra của mô hình. Mặc định, pipeline sẽ áp dụng hàm softmax cho đầu ra của mô hình. Các tùy chọn hợp lệ: [“softmax”, “sigmoid”, “none”]. Lưu ý rằng việc truyền giá trịNonecó sẵn trong Python sẽ mặc định thành “softmax”, do đó bạn cần truyền chuỗi “none” để tắt mọi xử lý sau.
Gán nhãn cho video được truyền vào dưới dạng đầu vào.
ZeroShotImageClassificationPipeline
lớp transformers.ZeroShotImageClassificationPipeline
< source >( **kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phân loại ảnh zero shot sử dụng CLIPModel. Pipeline này dự đoán lớp của một ảnh khi bạn cung cấp một ảnh và một tập hợp candidate_labels.
Ví dụ:
>>> from transformers import pipeline
>>> classifier = pipeline(model="google/siglip-so400m-patch14-384")
>>> classifier(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png",
... candidate_labels=["animals", "humans", "landscape"],
... )
[{'score': 0.965, 'label': 'animals'}, {'score': 0.03, 'label': 'humans'}, {'score': 0.005, 'label': 'landscape'}]
>>> classifier(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png",
... candidate_labels=["black and white", "photorealist", "painting"],
... )
[{'score': 0.996, 'label': 'black and white'}, {'score': 0.003, 'label': 'photorealist'}, {'score': 0.0, 'label': 'painting'}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline phân loại hình ảnh này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "zero-shot-image-classification".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( image: typing.Union[str, list[str], ForwardRef('Image.Image'), list['Image.Image']]candidate_labels: list**kwargs: Any )
Tham số
- image (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
- candidate_labels (
list[str]) — Các nhãn ứng viên cho hình ảnh này. Chúng sẽ được định dạng bằng hypothesis_template. - hypothesis_template (
str, tùy chọn, mặc định là"This is a photo of {}") — Định dạng được sử dụng cùng với candidate_labels để thực hiện phân loại ảnh bằng cách thay thế phần tử thay thế bằng candidate_labels. Truyền ”{}” nếu candidate_labels đã được định dạng sẵn. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Gán nhãn cho hình ảnh được truyền vào dưới dạng đầu vào.
ZeroShotObjectDetectionPipeline
lớp transformers.ZeroShotObjectDetectionPipeline
< source >( **kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phát hiện đối tượng zero shot sử dụng OwlViTForObjectDetection. Pipeline này dự đoán các khung bao của các đối tượng khi bạn cung cấp một hình ảnh và một tập hợp candidate_labels.
Ví dụ:
>>> from transformers import pipeline
>>> detector = pipeline(model="google/owlvit-base-patch32", task="zero-shot-object-detection")
>>> detector(
... "http://images.cocodataset.org/val2017/000000039769.jpg",
... candidate_labels=["cat", "couch"],
... )
[{'score': 0.287, 'label': 'cat', 'box': {'xmin': 324, 'ymin': 20, 'xmax': 640, 'ymax': 373}}, {'score': 0.254, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 315, 'ymax': 472}}, {'score': 0.121, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 642, 'ymax': 476}}]
>>> detector(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png",
... candidate_labels=["head", "bird"],
... )
[{'score': 0.119, 'label': 'bird', 'box': {'xmin': 71, 'ymin': 170, 'xmax': 410, 'ymax': 508}}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline phát hiện đối tượng này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "zero-shot-object-detection".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( image: typing.Union[str, ForwardRef('Image.Image'), list[dict[str, typing.Any]]]candidate_labels: str | list[str] | None = None**kwargs: Any )
Tham số
- image (
str,PIL.Imagehoặclist[dict[str, Any]]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa địa chỉ http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Bạn có thể sử dụng tham số này để gửi trực tiếp một danh sách hình ảnh, hoặc một tập dữ liệu hoặc một trình tạo như sau:
Phát hiện các đối tượng (hộp bao & lớp) trong ảnh được truyền vào dưới dạng đầu vào.
Xử lý ngôn ngữ tự nhiên
Các Pipeline có sẵn cho các tác vụ xử lý ngôn ngữ tự nhiên bao gồm những mục sau.
FillMaskPipeline
lớp transformers.FillMaskPipeline
< source >( model: PreTrainedModeltokenizer: PreTrainedTokenizer | None = Nonefeature_extractor: PreTrainedFeatureExtractor | None = Noneimage_processor: BaseImageProcessor | None = Nonevideo_processor: BaseVideoProcessor | None = Noneprocessor: ProcessorMixin | None = Nonetask: str = ''device: int | torch.device | None = Nonebinary_output: bool = False**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản. - top_k (
int, tùy chọn, mặc định là 5) — Số lượng dự đoán cần trả về. - targets (
strhoặclist[str], tùy chọn) — Khi được truyền vào, mô hình sẽ giới hạn các điểm số theo các mục tiêu được truyền thay vì tra cứu trong toàn bộ vocab. Nếu các mục tiêu được cung cấp không có trong vocab của mô hình, chúng sẽ được tokenize và token đầu tiên kết quả sẽ được sử dụng (kèm theo cảnh báo, và điều đó có thể làm chậm quá trình). - tokenizer_kwargs (
dict, tùy chọn) — Từ điển bổ sung các đối số từ khóa được truyền cho tokenizer.
__call__
< source >( inputs: str | list[str]**kwargs: Any ) → A list or a list of list of dict
Tham số
- inputs (
strhoặclist[str]) — Một hoặc nhiều văn bản (hoặc một danh sách các prompt) chứa các token bị che. - targets (
strhoặclist[str], tùy chọn) — Khi được truyền vào, mô hình sẽ giới hạn các điểm số theo các mục tiêu được truyền thay vì tra cứu trong toàn bộ vocab. Nếu các mục tiêu được cung cấp không có trong vocab của mô hình, chúng sẽ được token hóa và token đầu tiên trong kết quả sẽ được sử dụng (kèm theo cảnh báo, và điều đó có thể làm chậm quá trình). - top_k (
int, tùy chọn) — Khi được truyền vào, ghi đè số lượng dự đoán cần trả về.
Trả về
Một danh sách hoặc danh sách các danh sách dict
Mỗi kết quả được trả về dưới dạng danh sách các từ điển với các khóa sau:
- sequence (
str) — Đầu vào tương ứng với dự đoán token mặt nạ. - score (
float) — Xác suất tương ứng. - token (
int) — Id của token được dự đoán (để thay thế cho token bị che). - token_str (
str) — Token dự đoán (để thay thế token bị che).
Điền token bị che trong văn bản được đưa vào dưới dạng đầu vào.
TableQuestionAnsweringPipeline
lớp transformers.TableQuestionAnsweringPipeline
< source >( args_parser = <transformers.pipelines.table_question_answering.TableQuestionAnsweringArgumentHandler object at 0x7f6ce17ee210>**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline Table Question Answering sử dụng ModelForTableQuestionAnswering. Pipeline này chỉ có sẵn trong
PyTorch.
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh này trong tệp cấu hình của nó (generation_config.json), các giá trị mặc định sau sẽ được sử dụng:
- max_new_tokens: 256
Ví dụ:
>>> from transformers import pipeline
>>> oracle = pipeline(model="google/tapas-base-finetuned-wtq")
>>> table = {
... "Repository": ["Transformers", "Datasets", "Tokenizers"],
... "Stars": ["36542", "4512", "3934"],
... "Contributors": ["651", "77", "34"],
... "Programming language": ["Python", "Python", "Rust, Python and NodeJS"],
... }
>>> oracle(query="How many stars does the transformers repository have?", table=table)
{'answer': 'AVERAGE > 36542', 'coordinates': [(0, 1)], 'cells': ['36542'], 'aggregator': 'AVERAGE'}Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline trả lời câu hỏi dạng bảng này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "table-question-answering".
Các mô hình mà pipeline này có thể sử dụng là những mô hình đã được tinh chỉnh cho tác vụ trả lời câu hỏi dạng bảng. Xem danh sách các mô hình khả dụng mới nhất trên huggingface.co/models.
__call__
< source >( *args**kwargs ) → A dictionary or a list of dictionaries containing results
Tham số
- table (
pd.DataFramehoặcDict) — Pandas DataFrame hoặc từ điển sẽ được chuyển đổi thành DataFrame chứa tất cả các giá trị của bảng. Xem phía trên để biết ví dụ về từ điển. - query (
strhoặclist[str]) — Truy vấn hoặc danh sách các truy vấn sẽ được gửi đến mô hình cùng với bảng. - sequential (
bool, tùy chọn, mặc định làFalse) — Liệu thực hiện suy luận theo tuần tự hay theo lô. Việc chạy theo lô nhanh hơn, nhưng các mô hình như SQA yêu cầu suy luận phải được thực hiện tuần tự để trích xuất các quan hệ bên trong các chuỗi, do bản chất hội thoại của chúng. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy đến trình tự dài nhất trong lô (hoặc không lấp đầy nếu chỉ có một trình tự được cung cấp).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool,strhoặcTapasTruncationStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:Truehoặc'drop_rows_to_fit': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng hàng, loại bỏ các hàng khỏi bảng.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
Trả về
Một từ điển hoặc một danh sách các từ điển chứa kết quả
Mỗi kết quả là một từ điển với các khóa sau:
- answer (
str) — Câu trả lời cho truy vấn dựa trên bảng. Nếu có bộ tổng hợp, câu trả lời sẽ được đặt sauAGGREGATOR >. - tọa độ (
list[tuple[int, int]]) — Tọa độ của các ô chứa câu trả lời. - cells (
list[str]) — Danh sách các chuỗi được tạo thành từ các giá trị ô trả lời. - aggregator (
str) — Nếu mô hình có aggregator, giá trị trả về sẽ là aggregator đó.
Trả lời các truy vấn dựa trên một bảng. Pipeline chấp nhận một số loại đầu vào được mô tả chi tiết bên dưới:
pipeline(table, query)pipeline(table, [query])pipeline(table=table, query=query)pipeline(table=table, query=[query])pipeline({"table": table, "query": query})pipeline({"table": table, "query": [query]})pipeline([{"table": table, "query": query}, {"table": table, "query": query}])
Tham số table phải là một dict hoặc một DataFrame được xây dựng từ dict đó, chứa toàn bộ bảng:
Ví dụ:
data = {
"actors": ["brad pitt", "leonardo di caprio", "george clooney"],
"age": ["56", "45", "59"],
"number of movies": ["87", "53", "69"],
"date of birth": ["7 february 1967", "10 june 1996", "28 november 1967"],
}Từ điển này có thể được truyền vào như vậy, hoặc có thể được chuyển đổi thành một DataFrame của pandas:
TextClassificationPipeline
lớp transformers.TextClassificationPipeline
< source >( **kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản. - function_to_apply (
str, tuỳ chọn, mặc định là"default") — Hàm cần áp dụng cho đầu ra của mô hình để lấy điểm. Chấp nhận bốn giá trị khác nhau:"default": nếu mô hình có một nhãn duy nhất, sẽ áp dụng hàm sigmoid lên đầu ra. Nếu mô hình có nhiều nhãn, sẽ áp dụng hàm softmax lên đầu ra. Trong trường hợp các tác vụ hồi quy, sẽ không áp dụng bất kỳ hàm nào lên đầu ra."sigmoid": Áp dụng hàm sigmoid lên đầu ra."softmax": Áp dụng hàm softmax lên đầu ra."none": Không áp dụng bất kỳ hàm nào lên đầu ra.
Pipeline phân loại văn bản sử dụng bất kỳ ModelForSequenceClassification nào. Xem các ví dụ về phân loại chuỗi để biết thêm thông tin.
Ví dụ:
>>> from transformers import pipeline
>>> classifier = pipeline(model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
>>> classifier("This movie is disgustingly good !")
[{'label': 'POSITIVE', 'score': 1.0}]
>>> classifier("Director tried too much.")
[{'label': 'NEGATIVE', 'score': 0.996}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline phân loại văn bản này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "sentiment-analysis" (để phân loại các chuỗi theo cảm xúc tích cực hoặc tiêu cực).
Nếu có nhiều nhãn phân loại (model.config.num_labels >= 2), pipeline sẽ chạy softmax trên các kết quả. Nếu chỉ có một nhãn, pipeline sẽ chạy sigmoid trên kết quả. Trong trường hợp các tác vụ hồi quy (model.config.problem_type == "regression"), sẽ không áp dụng bất kỳ hàm nào lên đầu ra.
Các mô hình mà pipeline này có thể sử dụng là những mô hình đã được tinh chỉnh cho tác vụ phân loại chuỗi. Xem danh sách các mô hình khả dụng mới nhất trên huggingface.co/models.
__call__
< source >( inputs: str | list[str] | dict[str, str] | list[dict[str, str]]**kwargs: Any ) → A list of dict
Tham số
- inputs (
strhoặclist[str]hoặcdict[str], hoặclist[dict[str]]) — Một hoặc nhiều văn bản để phân loại. Để sử dụng các cặp văn bản cho việc phân loại của bạn, bạn có thể gửi một từ điển chứa các khóa{"text", "text_pair"}, hoặc một danh sách các từ điển như vậy. - top_k (
int, tùy chọn, mặc định là1) — Số lượng kết quả cần trả về. - function_to_apply (
str, tuỳ chọn, mặc định là"default") — Hàm cần áp dụng cho đầu ra của mô hình để lấy điểm. Chấp nhận bốn giá trị khác nhau:Nếu đối số này không được chỉ định, thì các hàm sau sẽ được áp dụng tùy theo số lượng nhãn:
- Nếu loại bài toán là hồi quy, sẽ không áp dụng bất kỳ hàm nào lên đầu ra.
- Nếu mô hình có một nhãn duy nhất, hàm sigmoid sẽ được áp dụng lên đầu ra.
- Nếu mô hình có nhiều nhãn, hàm softmax sẽ được áp dụng cho đầu ra.
Các giá trị có thể có là:
"sigmoid": Áp dụng hàm sigmoid lên đầu ra."softmax": Áp dụng hàm softmax lên đầu ra."none": Không áp dụng bất kỳ hàm nào lên đầu ra.
Trả về
Một danh sách dict
Mỗi kết quả được trả về dưới dạng danh sách các từ điển với các khóa sau:
- label (
str) — Nhãn được dự đoán. - score (
float) — Xác suất tương ứng.
Nếu top_k được sử dụng, một từ điển như vậy sẽ được trả về cho mỗi nhãn.
Phân loại văn bản được đưa vào dưới dạng đầu vào.
TextGenerationPipeline
lớp transformers.TextGenerationPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline tạo ngôn ngữ sử dụng bất kỳ ModelWithLMHead hoặc ModelForCausalLM nào. Pipeline này dự đoán các từ sẽ tiếp theo sau một prompt văn bản được chỉ định. Khi mô hình nền tảng là một mô hình hội thoại, nó cũng có thể nhận một hoặc nhiều cuộc trò chuyện, trong trường hợp đó pipeline sẽ hoạt động ở chế độ chat và sẽ tiếp tục các cuộc trò chuyện bằng cách thêm phản hồi của nó. Mỗi cuộc trò chuyện có dạng một danh sách các dict, trong đó mỗi dict chứa các khóa “role” và “content”.
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh này trong tệp cấu hình của nó (generation_config.json), các giá trị mặc định sau sẽ được sử dụng:
- max_new_tokens: 256
- do_sample: True
- temperature: 0.7
Ví dụ:
>>> from transformers import pipeline
>>> generator = pipeline(model="openai-community/gpt2")
>>> generator("I can't believe you did such a ", do_sample=False)
[{'generated_text': "I can't believe you did such a icky thing to me. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I"}]
>>> # These parameters will return suggestions, and only the newly created text making it easier for prompting suggestions.
>>> outputs = generator("My tart needs some", num_return_sequences=4, return_full_text=False)>>> from transformers import pipeline
>>> generator = pipeline(model="HuggingFaceH4/zephyr-7b-beta")
>>> # Zephyr-beta is a conversational model, so let's pass it a chat instead of a single string
>>> generator([{"role": "user", "content": "What is the capital of France? Answer in one word."}], do_sample=False, max_new_tokens=2)
[{'generated_text': [{'role': 'user', 'content': 'What is the capital of France? Answer in one word.'}, {'role': 'assistant', 'content': 'Paris'}]}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial về pipeline. Bạn có thể truyền các tham số sinh văn bản vào pipeline này để kiểm soát tiêu chí dừng, chiến lược giải mã và nhiều hơn nữa. Tìm hiểu thêm về các tham số sinh văn bản trong Các chiến lược sinh văn bản và Sinh văn bản.
Pipeline tạo ngôn ngữ này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "text-generation".
Các mô hình mà pipeline này có thể sử dụng là những mô hình đã được huấn luyện với mục tiêu mô hình hóa ngôn ngữ tự hồi quy. Xem danh sách các mô hình hoàn thành văn bản và danh sách các mô hình hội thoại trên [huggingface.co/models].
__call__
< source >( text_inputs**kwargs ) → A list or a list of lists of dict
Tham số
- text_inputs (
str,list[str],ChatType, hoặclist[ChatType]) — Một hoặc nhiều prompt (hoặc một danh sách các prompt) để hoàn thành. Nếu truyền vào các chuỗi hoặc một danh sách các chuỗi, pipeline này sẽ tiếp tục mỗi prompt. Ngoài ra, có thể truyền vào một “chat”, dưới dạng một danh sách các dict có các khóa “role” và “content”, hoặc một danh sách các chat như vậy. Khi truyền vào các chat, chat template của mô hình sẽ được sử dụng để định dạng chúng trước khi truyền vào mô hình. - return_tensors (
bool, tùy chọn, mặc định làFalse) — Trả về các tensor của dự đoán (dưới dạng chỉ số token) trong kết quả đầu ra. Nếu đặt thànhTrue, văn bản đã giải mã sẽ không được trả về. - return_text (
bool, tùy chọn) — Trả về các văn bản đã giải mã trong kết quả đầu ra. - return_full_text (
bool, tùy chọn, mặc định làTrue) — Nếu đặt thànhFalse, chỉ phần văn bản được thêm vào sẽ được trả về, ngược lại toàn bộ văn bản sẽ được trả về. Không thể chỉ định cùng lúc vớireturn_text. - clean_up_tokenization_spaces (
bool, tùy chọn) — Có dọn dẹp các khoảng trắng thừa tiềm ẩn trong đầu ra văn bản hay không. Mặc định là cài đặtclean_up_tokenization_spacescủa tokenizer. - continue_final_message(
bool, optional) — Chỉ báo này cho biết bạn muốn mô hình tiếp tục tin nhắn cuối cùng trong hội thoại đầu vào thay vì bắt đầu một tin nhắn mới, cho phép bạn “tiền nạp” phản hồi của nó. Mặc định, giá trị này làTruekhi tin nhắn cuối cùng trong hội thoại đầu vào có vai tròassistantvàFalsetrong các trường hợp khác, nhưng bạn có thể ghi đè thủ công hành vi đó bằng cách đặt cờ này. - prefix (
str, tùy chọn) — Tiền tố được thêm vào prompt. - stop_sequence (
strhoặclist[str], tùy chọn) — Một hoặc nhiều chuỗi dừng quá trình sinh khi chúng được tạo ra. Chuỗi dừng được bao gồm trong đầu ra. - handle_long_generation (
str, tuỳ chọn) — Mặc định, pipeline này không xử lý sinh dài (những lần sinh vượt quá độ dài tối đa của model theo một cách nào đó). Không có cách hoàn hảo nào để giải quyết vấn đề này (thêm thông tinhttps://github.com/huggingface/transformers/issues/14033#issuecomment-948385227). Cung cấp các chiến lược phổ biến để khắc phục vấn đề đó tùy thuộc vào trường hợp sử dụng của bạn.None: chiến lược mặc định, không có gì đặc biệt xảy ra"hole": Cắt bỏ phần bên trái của đầu vào và chừa lại một khoảng trống đủ rộng để quá trình sinh diễn ra (có thể cắt bỏ một phần lớn prompt và không phù hợp khi quá trình sinh vượt quá khả năng của mô hình)
- tokenizer_encode_kwargs (
dict, tùy chọn) — Các đối số từ khóa bổ sung để truyền đến bước mã hóa của tokenizer. Nếu đầu vào văn bản là một cuộc trò chuyện, nó sẽ được truyền đếnapply_chat_template. Ngược lại, nó sẽ được truyền đến__call__. - generate_kwargs (
dict, tùy chọn) — Các đối số từ khóa bổ sung để truyền cho phương thức generate của mô hình (xem phương thức generate tại đây).
Trả về
Một danh sách hoặc danh sách các danh sách dict
Trả về một trong các từ điển sau (không thể trả về kết hợp của cả generated_text và generated_token_ids):
- generated_text (
str, có khireturn_text=True) — Văn bản đã được tạo ra. - generated_token_ids (
torch.Tensor, có khireturn_tensors=True) — Các id token của văn bản được tạo ra.
Hoàn thành các prompt được đưa vào dưới dạng đầu vào.
TokenClassificationPipeline
lớp transformers.TokenClassificationPipeline
< source >( args_parser = <transformers.pipelines.token_classification.TokenClassificationArgumentHandler object at 0x7f6ce1efe790>**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản. - ignore_labels (
list[str], mặc định là["O"]) — Một danh sách các nhãn cần bỏ qua. - stride (
int, tùy chọn) — Nếu cung cấp stride, pipeline sẽ được áp dụng trên toàn bộ văn bản. Văn bản sẽ được chia thành các khối có kích thước model_max_length. Chỉ hoạt động với fast tokenizers vàaggregation_strategykhácNONE. Giá trị của tham số này xác định số lượng token chồng lấn giữa các khối. Nói cách khác, mô hình sẽ dịch chuyển về phía trướctokenizer.model_max_length - stridetoken ở mỗi bước. - aggregation_strategy (
str, tuỳ chọn, mặc định là"none") — Chiến lược để gộp (hoặc không gộp) các token dựa trên dự đoán của mô hình.- “none”: Sẽ không thực hiện bất kỳ phép tổng hợp nào và chỉ đơn giản trả về kết quả thô từ mô hình
- “simple”: Sẽ cố gắng nhóm các thực thể theo schema mặc định. (A, B-TAG), (B, I-TAG), (C, I-TAG), (D, B-TAG2) (E, B-TAG2) sẽ trở thành [{“word”: ABC, “entity”: “TAG”}, {“word”: “D”, “entity”: “TAG2”}, {“word”: “E”, “entity”: “TAG2”}] Lưu ý rằng hai thẻ B liên tiếp sẽ trở thành các thực thể khác nhau. Đối với các ngôn ngữ dựa trên từ, chúng ta có thể chia từ một cách không mong muốn: Hãy tưởng tượng Microsoft được gắn thẻ là [{“word”: “Micro”, “entity”: “ENTERPRISE”}, {“word”: “soft”, “entity”: “NAME”}]. Hãy tìm FIRST, MAX, AVERAGE để tìm cách giảm thiểu điều đó và phân biệt các từ (đối với các ngôn ngữ hỗ trợ ý nghĩa đó, về cơ bản là các token được phân tách bằng khoảng trắng). Các biện pháp giảm thiểu này chỉ hoạt động trên các từ thực, “New york” vẫn có thể được gắn thẻ với hai thực thể khác nhau.
- “first” : (chỉ hoạt động với các mô hình dựa trên từ) Sẽ sử dụng chiến lược
SIMPLEngoại trừ việc các từ không thể kết thúc với các thẻ khác nhau. Khi có sự mơ hồ, các từ sẽ đơn giản sử dụng thẻ của token đầu tiên của từ đó. - “average”: (chỉ hoạt động trên các mô hình dựa trên từ) Sẽ sử dụng chiến lược
SIMPLEngoại trừ việc các từ không thể kết thúc với các thẻ khác nhau. Điểm sẽ được trung bình hóa trước tiên trên các token, sau đó nhãn tối đa sẽ được áp dụng. - “max” : (chỉ hoạt động trên các mô hình dựa trên từ) Sẽ sử dụng chiến lược
SIMPLEngoại trừ việc các từ không thể kết thúc với các thẻ khác nhau. Thực thể từ đơn giản sẽ là token có điểm số cao nhất.
Pipeline Nhận thực thể (Named Entity Recognition) sử dụng bất kỳ ModelForTokenClassification nào. Xem các ví dụ về nhận thực thể để biết thêm thông tin.
Ví dụ:
>>> from transformers import pipeline
>>> token_classifier = pipeline(model="Jean-Baptiste/camembert-ner", aggregation_strategy="simple")
>>> sentence = "Je m'appelle jean-baptiste et je vis à montréal"
>>> tokens = token_classifier(sentence)
>>> tokens
[{'entity_group': 'PER', 'score': 0.9931, 'word': 'jean-baptiste', 'start': 12, 'end': 26}, {'entity_group': 'LOC', 'score': 0.998, 'word': 'montréal', 'start': 38, 'end': 47}]
>>> token = tokens[0]
>>> # Start and end provide an easy way to highlight words in the original text.
>>> sentence[token["start"] : token["end"]]
' jean-baptiste'
>>> # Some models use the same idea to do part of speech.
>>> syntaxer = pipeline(model="vblagoje/bert-english-uncased-finetuned-pos", aggregation_strategy="simple")
>>> syntaxer("My name is Sarah and I live in London")
[{'entity_group': 'PRON', 'score': 0.999, 'word': 'my', 'start': 0, 'end': 2}, {'entity_group': 'NOUN', 'score': 0.997, 'word': 'name', 'start': 3, 'end': 7}, {'entity_group': 'AUX', 'score': 0.994, 'word': 'is', 'start': 8, 'end': 10}, {'entity_group': 'PROPN', 'score': 0.999, 'word': 'sarah', 'start': 11, 'end': 16}, {'entity_group': 'CCONJ', 'score': 0.999, 'word': 'and', 'start': 17, 'end': 20}, {'entity_group': 'PRON', 'score': 0.999, 'word': 'i', 'start': 21, 'end': 22}, {'entity_group': 'VERB', 'score': 0.998, 'word': 'live', 'start': 23, 'end': 27}, {'entity_group': 'ADP', 'score': 0.999, 'word': 'in', 'start': 28, 'end': 30}, {'entity_group': 'PROPN', 'score': 0.999, 'word': 'london', 'start': 31, 'end': 37}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline nhận diện token này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "ner" (để dự đoán các lớp của token trong một chuỗi: người, tổ chức, địa điểm hoặc khác).
Các mô hình mà pipeline này có thể sử dụng là những mô hình đã được tinh chỉnh cho tác vụ phân loại token. Xem danh sách các mô hình khả dụng mới nhất trên huggingface.co/models.
__call__
< source >( inputs: str | list[str]**kwargs: Any ) → A list or a list of list of dict
Tham số
- inputs (
strhoặcList[str]) — Một hoặc nhiều văn bản (hoặc một danh sách các văn bản) cho phân loại token. Có thể đã được tách token trước khiis_split_into_words=True.
Trả về
Một danh sách hoặc danh sách các danh sách dict
Mỗi kết quả được trả về dưới dạng một danh sách các từ điển (một từ điển cho mỗi token trong đầu vào tương ứng, hoặc cho mỗi thực thể nếu pipeline này được khởi tạo với aggregation_strategy) với các khóa sau:
- word (
str) — Token/từ được phân loại. Giá trị này được lấy bằng cách giải mã các token đã chọn. Nếu bạn muốn có chuỗi chính xác trong câu gốc, hãy sử dụngstartvàend. - score (
float) — Xác suất tương ứng choentity. - entity (
str) — Thực thể được dự đoán cho token/từ đó (được đặt tên là entity_group khi aggregation_strategy không phải là"none". - index (
int, chỉ có khiaggregation_strategy="none") — Chỉ số của token tương ứng trong câu. - start (
int, tuỳ chọn) — Chỉ số bắt đầu của thực thể tương ứng trong câu. Chỉ tồn tại nếu các offset khả dụng trong tokenizer - end (
int, tùy chọn) — Chỉ số của phần kết thúc thực thể tương ứng trong câu. Chỉ tồn tại nếu các offset khả dụng trong tokenizer
Phân loại từng token của văn bản được đưa vào làm đầu vào.
Ghi đè các token từ một từ cho trước mà không khớp để buộc sự thống nhất tại các ranh giới từ.
Ví dụ: micro|soft| com|pany| B-ENT I-NAME I-ENT I-ENT sẽ được viết lại bằng chiến lược đầu tiên thành microsoft| company| B-ENT I-ENT
gather_pre_entities
< source >( sentence: strinput_ids: ndarrayscores: ndarrayoffset_mapping: list[tuple[int, int]] | Nonespecial_tokens_mask: ndarrayaggregation_strategy: AggregationStrategyword_ids: list[int | None] | None = Noneword_to_chars_map: list[tuple[int, int]] | None = None )
Gộp các mảng numpy khác nhau thành các dict chứa đầy đủ thông tin cần thiết để tổng hợp
group_entities
< source >( entities: list )
Tìm và nhóm các token liền kề có cùng thực thể được dự đoán.
group_sub_entities
< source >( entities: list )
Nhóm các token liền kề có cùng thực thể được dự đoán lại với nhau.
ZeroShotClassificationPipeline
lớp transformers.ZeroShotClassificationPipeline
< source >( args_parser = <transformers.pipelines.zero_shot_classification.ZeroShotClassificationArgumentHandler object at 0x7f6ce17ef950>**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline phân loại zero-shot dựa trên NLI, sử dụng ModelForSequenceClassification được huấn luyện trên các tác vụ NLI (suy luận ngôn ngữ tự nhiên). Tương đương với các pipeline text-classification, nhưng các mô hình này không yêu cầu một số lượng lớp tiềm năng được hardcode, chúng có thể được chọn tại thời điểm chạy. Điều này thường có nghĩa là tốc độ chậm hơn nhưng linh hoạt hơn nhiều.
Bất kỳ tổ hợp nào của các chuỗi và nhãn đều có thể được truyền vào, và mỗi tổ hợp sẽ được đặt dưới dạng cặp tiền đề/giả thuyết rồi truyền đến mô hình được huấn luyện trước. Sau đó, logit của entailment được lấy làm logit cho việc nhãn ứng viên là hợp lệ. Bất kỳ mô hình NLI nào cũng có thể được sử dụng, nhưng id của nhãn entailment phải được bao gồm trong :attr:~transformers.PreTrainedConfig.label2id của cấu hình mô hình.
Ví dụ:
>>> from transformers import pipeline
>>> oracle = pipeline(model="facebook/bart-large-mnli")
>>> oracle(
... "I have a problem with my iphone that needs to be resolved asap!!",
... candidate_labels=["urgent", "not urgent", "phone", "tablet", "computer"],
... )
{'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['urgent', 'phone', 'computer', 'not urgent', 'tablet'], 'scores': [0.504, 0.479, 0.013, 0.003, 0.002]}
>>> oracle(
... "I have a problem with my iphone that needs to be resolved asap!!",
... candidate_labels=["english", "german"],
... )
{'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['english', 'german'], 'scores': [0.814, 0.186]}Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline NLI này hiện có thể được tải từ pipeline() bằng cách sử dụng định danh tác vụ sau: "zero-shot-classification".
Các mô hình mà pipeline này có thể sử dụng là những mô hình đã được tinh chỉnh trên tác vụ NLI. Xem danh sách các mô hình khả dụng mới nhất trên huggingface.co/models.
__call__
< source >( sequences: str | list[str]*args**kwargs ) → A dict or a list of dict
Tham số
- sequences (
strhoặclist[str]) — Chuỗi cần phân loại, sẽ bị cắt ngắn nếu đầu vào của mô hình quá lớn. - candidate_labels (
strhoặclist[str]) — Bộ các nhãn lớp có thể dùng để phân loại từng chuỗi. Có thể là một nhãn duy nhất, một chuỗi các nhãn phân tách bằng dấu phẩy, hoặc một danh sách các nhãn. - hypothesis_template (
str, tuỳ chọn, mặc định là"This example is {}.") — Mẫu được dùng để biến mỗi nhãn thành một giả thuyết theo phong cách NLI. Mẫu này phải chứa cú pháp {} hoặc tương tự để chèn nhãn ứng viên vào trong mẫu. Ví dụ, mẫu mặc định là"This example is {}."Với nhãn ứng viên"sports", nội dung này sẽ được đưa vào mô hình dưới dạng"<cls> sequence to classify <sep> This example is sports . <sep>". Mẫu mặc định hoạt động tốt trong nhiều trường hợp, nhưng có thể đáng để thử nghiệm các mẫu khác nhau tùy thuộc vào bối cảnh của tác vụ. - multi_label (
bool, tùy chọn, mặc định làFalse) — Xác định xem có thể có nhiều nhãn ứng viên đúng hay không. NếuFalse, các điểm số sẽ được chuẩn hóa sao cho tổng xác suất của các nhãn cho mỗi chuỗi là 1. NếuTrue, các nhãn được coi là độc lập và xác suất được chuẩn hóa cho từng ứng viên bằng cách thực hiện softmax trên điểm số entailment so với điểm số contradiction.
Trả về
Một dict hoặc một danh sách các dict
Mỗi kết quả được trả về dưới dạng một từ điển với các khóa sau:
- sequence (
str) — Chuỗi mà đây là đầu ra của nó. - labels (
list[str]) — Các nhãn được sắp xếp theo thứ tự khả năng xảy ra. - scores (
list[float]) — Xác suất cho từng nhãn.
Phân loại chuỗi được đưa vào dưới dạng đầu vào. Xem tài liệu ZeroShotClassificationPipeline để biết thêm thông tin.
Đa phương thức
Các pipeline có sẵn cho các tác vụ đa phương thức bao gồm những mục sau.
DocumentQuestionAnsweringPipeline
lớp transformers.DocumentQuestionAnsweringPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline Document Question Answering sử dụng bất kỳ AutoModelForDocumentQuestionAnswering nào. Đầu vào/đầu ra tương tự như pipeline question answering (extractive); tuy nhiên, pipeline này nhận một hình ảnh (và các từ/hộp OCR tùy chọn) làm đầu vào thay vì ngữ cảnh văn bản.
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh này trong tệp cấu hình của nó (generation_config.json), các giá trị mặc định sau sẽ được sử dụng:
- max_new_tokens: 256
Ví dụ:
>>> from transformers import pipeline
>>> document_qa = pipeline(model="impira/layoutlm-document-qa")
>>> document_qa(
... image="https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/invoice_docquery_a.png",
... question="What is the invoice number?",
... )
[{'score': 0.425, 'answer': 'us-001', 'start': 16, 'end': 16}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline trả lời câu hỏi từ tài liệu này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "document-question-answering".
Các mô hình mà pipeline này có thể sử dụng là những mô hình đã được tinh chỉnh cho tác vụ trả lời câu hỏi từ tài liệu. Xem danh sách các mô hình khả dụng mới nhất trên huggingface.co/models.
__call__
< source >( image: typing.Union[ForwardRef('Image.Image'), str, list[dict[str, typing.Any]]]question: str | None = Noneword_boxes: tuple[str, list[float]] | None = None**kwargs: Any ) → A dict or a list of dict
Tham số
- image (
strhoặcPIL.Image) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline nhận một hình ảnh đơn hoặc một lô hình ảnh. Nếu được cung cấp một hình ảnh đơn, nó có thể được phát sóng (broadcast) đến nhiều câu hỏi.
- question (
str) — Một câu hỏi để đặt cho tài liệu. - word_boxes (
list[str, tuple[float, float, float, float]], optional) — Một danh sách các từ và hộp bao (chuẩn hóa 0->1000). Nếu bạn cung cấp đầu vào tùy chọn này, pipeline sẽ sử dụng các từ và hộp này thay vì chạy OCR trên hình ảnh để suy ra chúng cho các model cần chúng (ví dụ: LayoutLM). Điều này cho phép bạn tái sử dụng kết quả OCR qua nhiều lần gọi pipeline mà không cần phải chạy lại mỗi lần. - top_k (
int, tùy chọn, mặc định là 1) — Số lượng câu trả lời cần trả về (được chọn theo thứ tự khả năng xảy ra). Lưu ý rằng chúng tôi sẽ trả về ít hơn top_k câu trả lời nếu không có đủ các lựa chọn khả dụng trong ngữ cảnh. - doc_stride (
int, tùy chọn, mặc định là 128) — Nếu các từ trong tài liệu quá dài để cùng với câu hỏi vừa với mô hình, tài liệu sẽ được chia thành nhiều phần có phần chồng lấn. Tham số này kiểm soát kích thước của phần chồng lấn đó. - max_answer_len (
int, tùy chọn, mặc định là 15) — Độ dài tối đa của các câu trả lời dự đoán (ví dụ: chỉ xem xét các câu trả lời có độ dài ngắn hơn). - max_seq_len (
int, tuỳ chọn, mặc định là 384) — Chiều dài tối đa của toàn bộ câu (bối cảnh + câu hỏi) tính bằng số token của mỗi khối được truyền vào mô hình. Bối cảnh sẽ được chia thành nhiều khối (sử dụngdoc_stridelàm phần chồng lấn) nếu cần. - max_question_len (
int, tùy chọn, mặc định là 64) — Độ dài tối đa của câu hỏi sau khi phân tách token. Nó sẽ bị cắt ngắn nếu cần. - handle_impossible_answer (
bool, tùy chọn, mặc định làFalse) — Liệu chúng ta có chấp nhận "impossible" (không thể) là một câu trả lời hay không. - lang (
str, tùy chọn) — Ngôn ngữ sử dụng khi chạy OCR. Mặc định là english. - tesseract_config (
str, tùy chọn) — Các cờ bổ sung để truyền cho tesseract khi chạy OCR. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Trả về
Một dict hoặc một danh sách các dict
Mỗi kết quả được trả về dưới dạng một từ điển với các khóa sau:
- score (
float) — Xác suất liên quan đến câu trả lời. - start (
int) — Chỉ số từ bắt đầu của câu trả lời (trong phiên bản OCR của đầu vào hoặcword_boxesđược cung cấp). - end (
int) — Chỉ số từ kết thúc của câu trả lời (trong phiên bản OCR của đầu vào hoặcword_boxesđược cung cấp). - answer (
str) — Câu trả lời cho câu hỏi. - words (
list[int]) — Chỉ số của mỗi cặp từ/hộp nằm trong câu trả lời
Trả lời câu hỏi được đưa vào dưới dạng đầu vào bằng cách sử dụng tài liệu. Một tài liệu được định nghĩa là một hình ảnh và một danh sách tùy chọn các bộ ba (word, box) đại diện cho văn bản trong tài liệu. Nếu word_boxes không được cung cấp, hệ thống sẽ sử dụng bộ máy OCR Tesseract (nếu có sẵn) để tự động trích xuất các từ và hộp cho các mô hình kiểu LayoutLM, vốn yêu cầu chúng làm đầu vào. Đối với Donut, không chạy OCR.
Bạn có thể gọi pipeline theo một số cách:
pipeline(image=image, question=question)pipeline(image=image, question=question, word_boxes=word_boxes)pipeline([{"image": image, "question": question}])pipeline([{"image": image, "question": question, "word_boxes": word_boxes}])
FeatureExtractionPipeline
lớp transformers.FeatureExtractionPipeline
< source >( model: PreTrainedModeltokenizer: PreTrainedTokenizer | None = Nonefeature_extractor: PreTrainedFeatureExtractor | None = Noneimage_processor: BaseImageProcessor | None = Nonevideo_processor: BaseVideoProcessor | None = Noneprocessor: ProcessorMixin | None = Nonetask: str = ''device: int | torch.device | None = Nonebinary_output: bool = False**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - tokenize_kwargs (
dict, tùy chọn) — Từ điển bổ sung các đối số từ khóa được truyền cho tokenizer. - return_tensors (
bool, tùy chọn) — NếuTrue, trả về một tensor theo framework được chỉ định, ngược lại trả về một danh sách.
Pipeline trích xuất đặc trưng không sử dụng model head. Pipeline này trích xuất các hidden states từ transformer cơ bản, có thể được dùng làm đặc trưng trong các tác vụ downstream.
Ví dụ:
>>> from transformers import pipeline
>>> extractor = pipeline(model="google-bert/bert-base-uncased", task="feature-extraction")
>>> result = extractor("This is a simple test.", return_tensors=True)
>>> result.shape # This is a tensor of shape [1, sequence_length, hidden_dimension] representing the input string.
torch.Size([1, 8, 768])Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline trích xuất đặc trưng này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ: "feature-extraction".
Tất cả các model đều có thể được sử dụng cho pipeline này. Xem danh sách tất cả các model, bao gồm cả các model do cộng đồng đóng góp trên huggingface.co/models.
__call__
< source >( *args: str | list[str]**kwargs: Any ) → A nested list of float
Trích xuất các đặc trưng của văn bản đầu vào.
ImageFeatureExtractionPipeline
lớp transformers.ImageFeatureExtractionPipeline
< source >( model: PreTrainedModeltokenizer: PreTrainedTokenizer | None = Nonefeature_extractor: PreTrainedFeatureExtractor | None = Noneimage_processor: BaseImageProcessor | None = Nonevideo_processor: BaseVideoProcessor | None = Noneprocessor: ProcessorMixin | None = Nonetask: str = ''device: int | torch.device | None = Nonebinary_output: bool = False**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản. - image_processor_kwargs (
dict, tùy chọn) — Từ điển bổ sung các đối số từ khóa được truyền đến bộ xử lý ảnh, ví dụ: {“size”: {“height”: 100, “width”: 100}} - pool (
bool, tùy chọn, mặc định làFalse) — Có trả về đầu ra đã được pool hay không. NếuFalse, mô hình sẽ trả về các trạng thái ẩn thô.
Pipeline trích xuất đặc trưng hình ảnh không sử dụng model head. Pipeline này trích xuất các hidden states từ transformer cơ bản, có thể được dùng làm đặc trưng trong các tác vụ downstream.
Ví dụ:
>>> from transformers import pipeline
>>> extractor = pipeline(model="google/vit-base-patch16-224", task="image-feature-extraction")
>>> result = extractor("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png", return_tensors=True)
>>> result.shape # This is a tensor of shape [1, sequence_length, hidden_dimension] representing the input image.
torch.Size([1, 197, 768])Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline trích xuất đặc trưng hình ảnh này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ: "image-feature-extraction".
Tất cả các mô hình thị giác đều có thể được sử dụng cho pipeline này. Xem danh sách tất cả các mô hình, bao gồm cả các mô hình do cộng đồng đóng góp, trên huggingface.co/models.
__call__
< source >( *args: typing.Union[str, ForwardRef('Image.Image'), list['Image.Image'], list[str]]**kwargs: Any ) → A nested list of float
Tham số
- images (
str,list[str],PIL.Imagehoặclist[PIL.Image]) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết http trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh, sau đó phải được truyền dưới dạng chuỗi. Các hình ảnh trong một lô phải cùng một định dạng: tất cả là liên kết http, tất cả là đường dẫn cục bộ, hoặc tất cả là hình ảnh PIL.
- timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, sẽ không áp dụng timeout và gọi hàm có thể bị chặn vĩnh viễn.
Trả về
Một danh sách lồng nhau của float
Các đặc trưng được tính toán bởi mô hình.
Trích xuất các đặc trưng của đầu vào.
ImageTextToTextPipeline
lớp transformers.ImageTextToTextPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- processor (ProcessorMixin) —
Bộ xử lý sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ
ProcessorMixin. Processor là một đối tượng tổng hợp có thể chứa
tokenizer,feature_extractorvàimage_processor. - task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline image-text-to-text sử dụng AutoModelForImageTextToText. Pipeline này tạo ra văn bản dựa trên một hình ảnh và văn bản.
Khi mô hình nền tảng là một mô hình hội thoại, nó cũng có thể nhận một hoặc nhiều cuộc trò chuyện,
trong trường hợp đó pipeline sẽ hoạt động ở chế độ chat và sẽ tiếp tục các cuộc trò chuyện bằng cách thêm phản hồi của nó.
Mỗi cuộc trò chuyện có dạng một danh sách các dict, trong đó mỗi dict chứa các khóa “role” và “content”.
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh này trong tệp cấu hình của nó (generation_config.json), các giá trị mặc định sau sẽ được sử dụng:
- max_new_tokens: 256
Ví dụ:
>>> from transformers import pipeline
>>> pipe = pipeline(task="image-text-to-text", model="Salesforce/blip-image-captioning-base")
>>> pipe("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png", text="A photo of")
[{'generated_text': 'a photo of two birds'}]>>> from transformers import pipeline
>>> pipe = pipeline("image-text-to-text", model="llava-hf/llava-interleave-qwen-0.5b-hf")
>>> messages = [
>>> {
>>> "role": "user",
>>> "content": [
>>> {
>>> "type": "image",
>>> "url": "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/qwen_vl_demo.jpeg",
>>> },
>>> {"type": "text", "text": "Describe this image."},
>>> ],
>>> },
>>> {
>>> "role": "assistant",
>>> "content": [
>>> {"type": "text", "text": "There is a dog and"},
>>> ],
>>> },
>>> ]
>>> pipe(text=messages, max_new_tokens=20, return_full_text=False)
[{'input_text': [{'role': 'user',
'content': [{'type': 'image',
'url': 'https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/qwen_vl_demo.jpeg'},
{'type': 'text', 'text': 'Describe this image.'}]},
{'role': 'assistant',
'content': [{'type': 'text', 'text': 'There is a dog and'}]}],
'generated_text': ' a person in the image. The dog is sitting on the sand, and the person is sitting on'}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline từ ảnh-văn bản sang văn bản này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: “image-text-to-text”.
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( images: typing.Union[str, list[str], list[list[str]], ForwardRef('Image.Image'), list['Image.Image'], list[list['Image.Image']], list[dict], NoneType] = Nonetext: str | list[str] | list[dict] | None = None**kwargs ) → A list or a list of list of dict
Tham số
- images (
str,list[str],PIL.Image,list[PIL.Image],list[dict[str, Union[str, PIL.Image]]]`) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết HTTP(s) trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh. Cuối cùng, pipeline này cũng hỗ trợ định dạng chat (xem
text) chứa hình ảnh và văn bản trong đối số này. - text (str, list[str],
list[dict[str, Union[str, PIL.Image]]]) — Văn bản được sử dụng cho quá trình tạo. Nếu truyền vào một danh sách các chuỗi, độ dài của danh sách phải bằng với số lượng hình ảnh. Văn bản cũng có thể tuân theo định dạng chat: một danh sách các từ điển, trong đó mỗi từ điển đại diện cho một tin nhắn trong cuộc hội thoại. Mỗi từ điển phải có hai khóa: ‘role’ và ‘content’. ‘role’ phải là một trong ‘user’, ‘system’ hoặc ‘assistant’. ‘content’ phải là một danh sách các từ điển chứa văn bản của tin nhắn và kiểu của tin nhắn. Kiểu của tin nhắn có thể là ‘text’ hoặc ‘image’. Nếu kiểu là ‘image’, không cần văn bản. - return_tensors (
bool, tùy chọn, mặc định làFalse) — Trả về các tensor của dự đoán (dưới dạng chỉ số token) trong kết quả đầu ra. Nếu đặt thànhTrue, văn bản đã giải mã sẽ không được trả về. - return_text (
bool, tùy chọn) — Trả về các văn bản đã giải mã trong kết quả đầu ra. - return_full_text (
bool, tùy chọn, mặc định làTrue) — Nếu đặt thànhFalse, chỉ phần văn bản được thêm vào sẽ được trả về, ngược lại toàn bộ văn bản sẽ được trả về. Không thể chỉ định cùng lúc vớireturn_text. - clean_up_tokenization_spaces (
bool, tùy chọn) — Có dọn dẹp các khoảng trắng thừa tiềm ẩn trong đầu ra văn bản hay không. Mặc định là cài đặtclean_up_tokenization_spacescủa tokenizer. - continue_final_message(
bool, optional) — Chỉ báo này cho biết bạn muốn mô hình tiếp tục tin nhắn cuối cùng trong hội thoại đầu vào thay vì bắt đầu một tin nhắn mới, cho phép bạn “tiền nạp” phản hồi của nó. Mặc định, giá trị này làTruekhi tin nhắn cuối cùng trong hội thoại đầu vào có vai tròassistantvàFalsetrong các trường hợp khác, nhưng bạn có thể ghi đè thủ công hành vi đó bằng cách đặt cờ này.
Trả về
Một danh sách hoặc danh sách các danh sách dict
Mỗi kết quả được trả về dưới dạng một từ điển với các khóa sau (không thể trả về kết hợp của cả generated_text và generated_token_ids):
- generated_text (
str, có khireturn_text=True) — Văn bản đã được tạo ra. - generated_token_ids (
torch.Tensor, có khireturn_tensors=True) — Các id token của văn bản được tạo ra. - input_text (
str) — Văn bản đầu vào.
Tạo văn bản dựa trên văn bản và hình ảnh được truyền vào làm đầu vào.
AnyToAnyPipeline
lớp transformers.AnyToAnyPipeline
< source >( *args**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- processor (ProcessorMixin) —
Bộ xử lý sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ
ProcessorMixin. Processor là một đối tượng tổng hợp có thể chứa
tokenizer,feature_extractorvàimage_processor. - task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Pipeline tạo đa phương thức sử dụng AutoModelForMultimodalLM. Pipeline này tạo văn bản dựa trên bất kỳ tổ hợp nào của dữ liệu đa phương thức và văn bản. Khi mô hình nền là mô hình hội thoại, nó cũng có thể nhận một hoặc nhiều cuộc trò chuyện, trong trường hợp đó pipeline sẽ hoạt động ở chế độ chat và sẽ tiếp tục cuộc trò chuyện bằng cách thêm phản hồi của nó. Mỗi cuộc trò chuyện có dạng một danh sách các dict, trong đó mỗi dict chứa các khóa “role” và “content”.
Trừ khi mô hình bạn đang dùng đặt rõ các tham số sinh này trong tệp cấu hình của nó (generation_config.json), các giá trị mặc định sau sẽ được sử dụng:
- max_new_tokens: 256
Ví dụ:
>>> from transformers import pipeline
>>> pipe = pipeline(task="any-to-any", model="google/gemma-3n-E4B-it")
>>> pipe("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png", text="A photo of")
[{'generated_text': 'a photo of two birds'}]>>> from transformers import pipeline
>>> pipe = pipeline("any-to-any", model="google/gemma-3n-E4B-it")
>>> messages = [
>>> {
>>> "role": "user",
>>> "content": [
>>> {
>>> "type": "image",
>>> "url": "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/qwen_vl_demo.jpeg",
>>> },
>>> {"type": "text", "text": "Describe this image."},
>>> ],
>>> },
>>> {
>>> "role": "assistant",
>>> "content": [
>>> {"type": "text", "text": "There is a dog and"},
>>> ],
>>> },
>>> ]
>>> pipe(text=messages, max_new_tokens=20, return_full_text=False)
[{'input_text': [{'role': 'user',
'content': [{'type': 'image',
'url': 'https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/qwen_vl_demo.jpeg'},
{'type': 'text', 'text': 'Describe this image.'}]},
{'role': 'assistant',
'content': [{'type': 'text', 'text': 'There is a dog and'}]}],
'generated_text': ' a person in the image. The dog is sitting on the sand, and the person is sitting on'}]Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline đa phương thức này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: “any-to-any”.
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( text: str | list[str] | list[dict]images: typing.Union[str, list[str], list[list[str]], ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonevideos: typing.Union[str, list[str], list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneaudio: typing.Union[str, list[str], numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None**kwargs ) → A list or a list of list of dict
Tham số
- text (
str,list[str],list[dict]) — Văn bản được sử dụng cho quá trình sinh. Nếu truyền vào một danh sách các chuỗi, độ dài của danh sách phải bằng với số lượng hình ảnh. Văn bản cũng có thể tuân theo định dạng chat: một danh sách các từ điển, trong đó mỗi từ điển đại diện cho một tin nhắn trong cuộc hội thoại. Mỗi từ điển phải có hai khóa: ‘role’ và ‘content’. ‘role’ phải là một trong ‘user’, ‘system’ hoặc ‘assistant’. ‘content’ phải là một danh sách từ điển chứa văn bản của tin nhắn và loại của tin nhắn. - images (
str,list[str],ImageInput) — Pipeline xử lý ba loại hình ảnh:- Chuỗi chứa liên kết HTTP(s) trỏ đến một hình ảnh
- Chuỗi chứa đường dẫn cục bộ đến một hình ảnh
- Một hình ảnh được tải trực tiếp trong PIL
Pipeline chấp nhận một hình ảnh đơn lẻ hoặc một lô hình ảnh. Cuối cùng, pipeline này cũng hỗ trợ định dạng chat (xem
text) chứa hình ảnh và văn bản trong đối số này. - videos (
str,list[str],VideoInput) — Pipeline xử lý ba loại video:- Chuỗi chứa liên kết HTTP(s) trỏ đến một video
- Chuỗi chứa đường dẫn cục bộ đến một video
- Một video đã được tải và giải mã thành định dạng mảng
Pipeline chấp nhận một video đơn lẻ hoặc một lô video. Cuối cùng, pipeline này cũng hỗ trợ định dạng chat (xem
text) chứa video và văn bản trong đối số này. - audio (
str,list[str],AudioInput) — Pipeline xử lý ba loại âm thanh:- Chuỗi chứa liên kết HTTP(s) trỏ đến một tệp âm thanh
- Chuỗi chứa đường dẫn cục bộ đến tệp âm thanh
- Âm thanh được tải trực tiếp trong PIL
Pipeline chấp nhận một audio đơn lẻ hoặc một batch các audio. Cuối cùng, pipeline này cũng hỗ trợ định dạng chat (xem
text) chứa audio và văn bản trong đối số này. - return_tensors (
bool, tùy chọn, mặc định làFalse) — Trả về các tensor của dự đoán (dưới dạng chỉ số token) trong kết quả đầu ra. Nếu đặt thànhTrue, văn bản đã giải mã sẽ không được trả về. - return_text (
bool, tùy chọn) — Trả về các văn bản đã giải mã trong kết quả đầu ra. - return_full_text (
bool, tùy chọn, mặc định làTrue) — Nếu đặt thànhFalse, chỉ phần văn bản được thêm vào sẽ được trả về, ngược lại toàn bộ văn bản sẽ được trả về. Không thể chỉ định cùng lúc vớireturn_text. - clean_up_tokenization_spaces (
bool, tùy chọn) — Có dọn dẹp các khoảng trắng thừa tiềm ẩn trong đầu ra văn bản hay không. Mặc định là cài đặtclean_up_tokenization_spacescủa tokenizer. - continue_final_message(
bool, optional) — Chỉ báo này cho biết bạn muốn mô hình tiếp tục tin nhắn cuối cùng trong hội thoại đầu vào thay vì bắt đầu một tin nhắn mới, cho phép bạn “tiền nạp” phản hồi của nó. Mặc định, giá trị này làTruekhi tin nhắn cuối cùng trong hội thoại đầu vào có vai tròassistantvàFalsetrong các trường hợp khác, nhưng bạn có thể ghi đè thủ công hành vi đó bằng cách đặt cờ này.
Trả về
Một danh sách hoặc danh sách các danh sách dict
Mỗi kết quả được trả về dưới dạng một từ điển với các khóa sau (không thể trả về kết hợp của cả generated_text và generated_token_ids):
- generated_text (
str, có mặt khireturn_text=Truevàgeneration_mode="text") — Văn bản đã được tạo ra. - generated_audio (
np.ndarray, có khigeneration_mode="audio") — Âm thanh đã được tạo. - generated_image (
PIL.Image.Image, có khigeneration_mode="image") — Hình ảnh được tạo ra. - generated_token_ids (
torch.Tensor, có mặt khireturn_tensors=Truevàgeneration_mode="text") — Các id token của văn bản được tạo ra. - input_text (
str) — Văn bản đầu vào.
Tạo văn bản dựa trên văn bản và tùy chọn dữ liệu đa phương thức được truyền vào làm đầu vào.
MaskGenerationPipeline
lớp transformers.MaskGenerationPipeline
< source >( **kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản. - points_per_batch (tùy chọn, int, mặc định là 64) — Đặt số lượng điểm được chạy đồng thời bởi mô hình. Số lượng cao hơn có thể nhanh hơn nhưng sử dụng nhiều bộ nhớ GPU hơn.
- output_bboxes_mask (
bool, tùy chọn, mặc định làFalse) — Có xuất ra các dự đoán hộp bao (bounding box) hay không. - output_rle_masks (
bool, tuỳ chọn, mặc định làFalse) — Có xuất các mask ở định dạngRLEhay không
Tự động tạo mặt nạ cho hình ảnh bằng SamForMaskGeneration. Pipeline này dự đoán các mặt nạ nhị phân cho một hình ảnh, dựa trên hình ảnh được cung cấp. Đây là một ChunkPipeline vì bạn có thể tách các điểm trong một mini-batch để tránh các vấn đề OOM. Sử dụng đối số points_per_batch để kiểm soát số lượng điểm được xử lý cùng một lúc. Mặc định là 64.
Pipeline hoạt động theo 3 bước:
preprocess: Một lưới gồm 1024 điểm được tạo ra với khoảng cách đều nhau, cùng với các hộp bao và nhãn điểm. Để biết thêm chi tiết về cách các điểm và hộp bao được tạo ra, hãy xem hàm_generate_crop_boxes. Ảnh cũng được tiền xử lý bằngimage_processor. Hàm nàyyieldsmột minibatch gồmpoints_per_batch.forward: truyền các đầu ra củapreprocessvào mô hình. Nhúng hình ảnh chỉ được tính toán một lần. Gọi cảself.model.get_image_embeddingsvà đảm bảo rằng gradient không được tính toán, và các tensor cùng mô hình nằm trên cùng một thiết bị.postprocess: Phần quan trọng nhất của việc tạo mặt nạ tự động diễn ra ở đây. Ba bước được thực hiện:- image_processor.postprocess_masks (được thực hiện trong mỗi vòng lặp minibatch): nhận các mask đầu ra thô, điều chỉnh kích thước của chúng theo kích thước ảnh, và chuyển đổi chúng thành các mask nhị phân.
- image_processor.filter_masks (trong mỗi vòng lặp minibatch): sử dụng cả
pred_iou_threshvàstability_scores. Ngoài ra, còn áp dụng một loạt bộ lọc dựa trên non maximum suppression để loại bỏ các mask kém chất lượng. - image_processor.postprocess_masks_for_amg áp dụng NSM lên mask để chỉ giữ lại những mask liên quan.
Ví dụ:
>>> from transformers import pipeline
>>> generator = pipeline(model="facebook/sam-vit-base", task="mask-generation")
>>> outputs = generator(
... "http://images.cocodataset.org/val2017/000000039769.jpg",
... )
>>> outputs = generator(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png", points_per_batch=128
... )Tìm hiểu thêm về các kiến thức cơ bản khi sử dụng pipeline trong tutorial pipeline
Pipeline phân đoạn này hiện có thể được nạp từ pipeline() bằng cách sử dụng định danh tác vụ sau: "mask-generation".
Xem danh sách các model khả dụng trên huggingface.co/models.
__call__
< source >( image: typing.Union[str, ForwardRef('Image.Image'), list[str], list['Image.Image']]*args: Any**kwargs: Any ) → Dict
Tham số
- image (
str,List[str],PIL.ImagehoặcList[PIL.Image]) — Hình ảnh hoặc danh sách các hình ảnh. - mask_threshold (
float, tùy chọn, mặc định là 0.0) — Ngưỡng sử dụng khi chuyển các mặt nạ dự đoán thành giá trị nhị phân. - pred_iou_thresh (
float, tùy chọn, mặc định là 0.88) — Ngưỡng lọc trong[0,1]được áp dụng cho chất lượng mask dự đoán của mô hình. - stability_score_thresh (
float, tùy chọn, mặc định là 0.95) — Ngưỡng lọc trong[0,1], sử dụng độ ổn định của mask trước các thay đổi đối với ngưỡng cắt được dùng để nhị phân hóa các dự đoán mask của mô hình. - stability_score_offset (
int, tùy chọn, mặc định là 1) — Lượng dịch chuyển ngưỡng cắt khi tính điểm ổn định. - crops_nms_thresh (
float, tùy chọn, mặc định là 0.7) — Ngưỡng cắt IoU của hộp được sử dụng bởi non-maximal suppression để lọc các mặt nạ trùng lặp. - crops_n_layers (
int, tùy chọn, mặc định là 0) — Nếucrops_n_layers>0, dự đoán mask sẽ được chạy lại trên các vùng cắt của ảnh. Đặt số lượng lớp cần chạy, trong đó mỗi lớp có 2**i_layer số vùng cắt ảnh. - crop_overlap_ratio (
float, tùy chọn, mặc định là512 / 1500) — Đặt mức độ chồng chéo giữa các crop. Ở lớp crop đầu tiên, các crop sẽ chồng chéo nhau một phần bằng tỷ lệ này so với chiều dài của ảnh. Các lớp sau có nhiều crop hơn sẽ giảm mức chồng chéo này xuống. - crop_n_points_downscale_factor (
int, tùy chọn, mặc định là1) — Số điểm được lấy mẫu trên mỗi cạnh ở lớp n được thu nhỏ đi crop_n_points_downscale_factor**n lần. - timeout (
float, tùy chọn, mặc định là None) — Thời gian tối đa tính bằng giây để chờ tải ảnh từ web. Nếu là None, không đặt timeout và gọi có thể bị chặn vĩnh viễn.
Trả về
Dict
Một từ điển có các khóa sau:
- mask (
PIL.Image) — Một mask nhị phân của đối tượng được phát hiện dưới dạng PIL Image có kích thước(width, height)của ảnh gốc. Trả về một mask được lấp đầy bằng số 0 nếu không tìm thấy đối tượng nào. - score (tùy chọn
float) — Tùy chọn, khi mô hình có khả năng ước lượng độ tin cậy của “đối tượng” được mô tả bởi nhãn và mặt nạ.
Tạo các mặt nạ phân đoạn nhị phân
Lớp cha: Pipeline
lớp transformers.Pipeline
< source >( model: PreTrainedModeltokenizer: PreTrainedTokenizer | None = Nonefeature_extractor: PreTrainedFeatureExtractor | None = Noneimage_processor: BaseImageProcessor | None = Nonevideo_processor: BaseVideoProcessor | None = Noneprocessor: ProcessorMixin | None = Nonetask: str = ''device: int | torch.device | None = Nonebinary_output: bool = False**kwargs )
Tham số
- model (PreTrainedModel) — Mô hình sẽ được pipeline sử dụng để đưa ra dự đoán. Đây cần phải là một mô hình kế thừa từ PreTrainedModel.
- tokenizer (PreTrainedTokenizer) — Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đối tượng này kế thừa từ PreTrainedTokenizer.
- feature_extractor (SequenceFeatureExtractor) — Bộ trích xuất đặc trưng sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ SequenceFeatureExtractor.
- image_processor (BaseImageProcessor) — Bộ xử lý ảnh sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ BaseImageProcessor.
- processor (ProcessorMixin) —
Bộ xử lý sẽ được pipeline sử dụng để mã hóa dữ liệu cho mô hình. Đối tượng này kế thừa từ
ProcessorMixin. Processor là một đối tượng tổng hợp có thể chứa
tokenizer,feature_extractorvàimage_processor. - task (
str, mặc định là"") — Một định danh tác vụ cho pipeline. - num_workers (
int, tùy chọn, mặc định là 8) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), số lượng workers sẽ được sử dụng. - batch_size (
int, tùy chọn, mặc định là 1) — Khi pipeline sẽ sử dụng DataLoader (khi truyền một dataset, trên GPU cho một mô hình Pytorch), kích thước của batch cần sử dụng, đối với suy luận điều này không phải lúc nào cũng có lợi, vui lòng đọc Batching with pipelines . - args_parser (ArgumentHandler, tùy chọn) — Tham chiếu đến đối tượng chịu trách nhiệm phân tích các tham số pipeline được cung cấp.
- device (
inthoặcstrhoặctorch.device, tùy chọn) — Thiết bị mà pipeline được cấp phát. Khi không được đặt, pipeline sẽ được đặt trên bộ tăng tốc đầu tiên khả dụng (CUDA, MPS, XPU, …) và chỉ chuyển sang CPU khi không có bộ tăng tốc nào; mô hình sẽ được chuyển đến đó tự động. Truyềndevice="cpu"(hoặc-1) để buộc dùng CPU, một chỉ số dương hoặc"cuda:1"để chọn một bộ tăng tốc cụ thể, hoặc mộttorch.device/strbản địa. Tham số này không thể kết hợp với một mô hình đã được nạp quaaccelerate(tức là mô hình cóhf_device_map). - dtype (
strhoặctorch.dtype, tùy chọn, mặc định là"auto") — Độ chính xác mà mô hình được nạp vào, được chuyển tiếp đếnfrom_pretrained. Mặc định là"auto", sẽ nạp mô hình với dtype mà nó được lưu (đọc từconfig.dtypecủa checkpoint, nếu không thì suy luận từ các trọng số). Truyền mộttorch.float16,torch.bfloat16,torch.float32, … cụ thể để ghi đè. - binary_output (
bool, tùy chọn, mặc định làFalse) — Cờ chỉ định xem đầu ra của pipeline có nên ở định dạng được nối tiếp (ví dụ: pickle) hay là dữ liệu đầu ra thô, chẳng hạn như văn bản.
Lớp Pipeline là lớp mà tất cả các pipeline kế thừa. Hãy tham khảo lớp này để biết các phương thức được chia sẻ giữa các pipeline khác nhau.
Lớp cơ sở triển khai các thao tác dạng đường ống. Quy trình làm việc của đường ống được định nghĩa là một chuỗi các thao tác sau:
Đầu vào -> Tokenization -> Suy luận Mô hình -> Xử lý sau (phụ thuộc vào tác vụ) -> Đầu ra
Pipeline hỗ trợ chạy trên CPU hoặc GPU thông qua tham số device (xem bên dưới).
Một số pipeline, chẳng hạn như FeatureExtractionPipeline ('feature-extraction'), xuất ra các đối tượng tensor lớn dưới dạng danh sách lồng nhau. Để tránh việc xuất các cấu trúc lớn như vậy dưới dạng dữ liệu văn bản, chúng tôi cung cấp tham số khởi tạo binary_output. Nếu đặt thành True, kết quả đầu ra sẽ được lưu ở định dạng pickle.
check_model_type
< source >( supported_models: list[str] | dict )
Kiểm tra xem lớp mô hình có được pipeline hỗ trợ hay không.
Context Manager cho phép phân bổ tensor trên thiết bị do người dùng chỉ định.
ensure_tensor_on_device
< source >( **inputs ) → dict[str, torch.Tensor]
Đảm bảo các tensor PyTorch nằm trên thiết bị được chỉ định.
Postprocess sẽ nhận các đầu ra thô của phương thức _forward, thường là các tensor, và định dạng lại chúng thành
định dạng thân thiện hơn. Thông thường, nó sẽ xuất ra một danh sách hoặc một dict chứa các kết quả (chỉ gồm chuỗi và
số).
Giao diện Scikit / Keras cho các pipeline của transformers. Phương thức này sẽ chuyển tiếp đến call().
Preprocess sẽ nhận input_ của một pipeline cụ thể và trả về một từ điển chứa mọi thứ cần thiết để _forward chạy đúng. Nó phải chứa ít nhất một tensor, nhưng có thể có các mục khác tùy ý.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Tham số
- repo_id (
str) — Tên của kho mà bạn muốn đẩy pipe của mình đến. Nó nên chứa tên tổ chức của bạn khi đẩy đến một tổ chức cụ thể. - commit_message (
str, tùy chọn) — Thông báo để commit khi đẩy. Mặc định là"Upload pipe". - commit_description (
str, tùy chọn) — Mô tả của commit sẽ được tạo - private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
boolhoặcstr, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue(mặc định), sẽ sử dụng token được tạo ra khi chạyhf auth login(được lưu trong~/.huggingface). - revision (
str, tùy chọn) — Nhánh để đẩy các tệp đã tải lên. - create_pr (
bool, tùy chọn, mặc định làFalse) — Có tạo PR với các tệp đã tải lên hay commit trực tiếp hay không. - max_shard_size (
inthoặcstr, tùy chọn, mặc định là"50GB") — Chỉ áp dụng cho các model. Kích thước tối đa của một checkpoint trước khi được chia shard. Các checkpoint sau khi chia shard sẽ có kích thước nhỏ hơn giá trị này. Nếu được biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ"5MB"). - tags (
list[str], tùy chọn) — Danh sách các thẻ để đẩy lên Hub.
Tải tệp pipeline lên 🤗 Model Hub.
Ví dụ:
from transformers import pipeline
pipe = pipeline("google-bert/bert-base-cased")
# Push the pipe to your namespace with the name "my-finetuned-bert".
pipe.push_to_hub("my-finetuned-bert")
# Push the pipe to an organization with the name "my-finetuned-bert".
pipe.push_to_hub("huggingface/my-finetuned-bert")save_pretrained
< source >( save_directory: str | os.PathLike**kwargs: Any )
Tham số
- save_directory (
strhoặcos.PathLike) — Đường dẫn đến thư mục nơi sẽ lưu. Thư mục sẽ được tạo nếu chưa tồn tại. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến phương thức push_to_hub().
Lưu mô hình và tokenizer của pipeline.
Giao diện Scikit / Keras cho các pipeline của transformers. Phương thức này sẽ chuyển tiếp đến call().