# 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ụ](https://huggingface.co/tasks) để có ví dụ sử dụng.

Có hai nhóm trừu tượng hóa pipeline cần lưu ý:

- [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](#audio), [thị giác máy tính](#computer-vision), [xử lý ngôn ngữ tự nhiên](#natural-language-processing) và [đa phương thức](#multimodal).

## Trừu tượng hóa pipeline[[transformers.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:

```python
>>> 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](https://huggingface.co), bạn có thể bỏ qua tác vụ nếu mô hình trên hub đã định nghĩa sẵn:

```python
>>> 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*.

```python
>>> 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 tập 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ộ tập 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.

```python
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:

```python
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[[transformers.pipeline]]

```python
transformers.pipeline(task: str | None = None, model: str | PreTrainedModel | None = None, config: str | PreTrainedConfig | None = None, tokenizer: str | PreTrainedTokenizer | PreTrainedTokenizerFast | None = None, feature_extractor: str | FeatureExtractionMixin | None = None, image_processor: str | BaseImageProcessor | None = None, video_processor: str | BaseVideoProcessor | None = None, processor: str | ProcessorMixin | None = None, revision: str | None = None, use_fast: bool = True, token: str | bool | None = None, device: int | str | torch.device | None = None, device_map: str | dict[str, int | str] | None = None, dtype: str | torch.dtype | None = 'auto', trust_remote_code: bool | None = None, model_kwargs: dict[str, Any] | None = None, pipeline_class: Any | None = None, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/__init__.py#L745)

**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ề [AudioClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.AudioClassificationPipeline). - `"automatic-speech-recognition"`: sẽ trả về [AutomaticSpeechRecognitionPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.AutomaticSpeechRecognitionPipeline). - `"depth-estimation"`: sẽ trả về [DepthEstimationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.DepthEstimationPipeline). - `"document-question-answering"`: sẽ trả về [DocumentQuestionAnsweringPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.DocumentQuestionAnsweringPipeline). - `"feature-extraction"`: sẽ trả về [FeatureExtractionPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.FeatureExtractionPipeline). - `"fill-mask"`: sẽ trả về [FillMaskPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.FillMaskPipeline):. - `"image-classification"`: sẽ trả về [ImageClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ImageClassificationPipeline). - `"image-feature-extraction"`: sẽ trả về [ImageFeatureExtractionPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ImageFeatureExtractionPipeline). - `"image-segmentation"`: sẽ trả về [ImageSegmentationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ImageSegmentationPipeline). - `"image-text-to-text"`: sẽ trả về [ImageTextToTextPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ImageTextToTextPipeline). - `"keypoint-matching"`: sẽ trả về [KeypointMatchingPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.KeypointMatchingPipeline). - `"mask-generation"`: sẽ trả về [MaskGenerationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.MaskGenerationPipeline). - `"object-detection"`: sẽ trả về [ObjectDetectionPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ObjectDetectionPipeline). - `"table-question-answering"`: sẽ trả về [TableQuestionAnsweringPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.TableQuestionAnsweringPipeline). - `"text-classification"` (có alias `"sentiment-analysis"`): sẽ trả về [TextClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.TextClassificationPipeline). - `"text-generation"`: sẽ trả về [TextGenerationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.TextGenerationPipeline):. - `"text-to-audio"` (có alias `"text-to-speech"`): sẽ trả về [TextToAudioPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.TextToAudioPipeline):. - `"token-classification"` (có alias `"ner"`): sẽ trả về [TokenClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.TokenClassificationPipeline). - `"video-classification"`: sẽ trả về [VideoClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.VideoClassificationPipeline). - `"zero-shot-classification"`: sẽ trả về [ZeroShotClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ZeroShotClassificationPipeline). - `"zero-shot-image-classification"`: sẽ trả về [ZeroShotImageClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ZeroShotImageClassificationPipeline). - `"zero-shot-audio-classification"`: sẽ trả về [ZeroShotAudioClassificationPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ZeroShotAudioClassificationPipeline). - `"zero-shot-object-detection"`: sẽ trả về [ZeroShotObjectDetectionPipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.ZeroShotObjectDetectionPipeline).

model (`str` hoặc [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel), *optional*) : 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 instance thực tế của mô hình được huấn luyện trước kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Nếu không được cung cấp, giá trị mặc định cho `task` sẽ được tải.

config (`str` hoặc [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig), *optional*) : Cấu hình sẽ được pipeline sử dụng để khởi tạo mô hình. Đây có thể là định danh mô hình hoặc một cấu hình mô hình được huấn luyện trước thực sự kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig). Nếu không được cung cấp, tệp cấu hình mặc định cho mô hình được yêu cầu sẽ được sử dụng. Điều đó có nghĩa là nếu `model` được đưa ra, cấu hình mặc định của nó sẽ được sử dụng. Tuy nhiên, nếu `model` không được cung cấp, cấu hình của mô hình mặc định cho `task` này sẽ được sử dụng thay thế.

tokenizer (`str` hoặc [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend), *optional*) : Tokenizer sẽ được pipeline sử dụng để mã hóa dữ liệu cho model. Đây có thể là một model identifier hoặc một pretrained tokenizer thực sự kế thừa từ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend). 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ếu `model` không được chỉ định hoặc không phải là một chuỗi, thì tokenizer 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à một chuỗi, thì tokenizer mặc định cho `task` đã cho sẽ được tải.

feature_extractor (`str` hoặc [FeatureExtractionMixin](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.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 mô hình. Đây có thể là một định danh mô hình hoặc một bộ trích xuất đặc trưng được huấn luyện trước, kế thừa từ [FeatureExtractionMixin](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.FeatureExtractionMixin).  Các bộ trích xuất đặc trưng đượ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 thức. Các mô hình đ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à một 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à một chuỗi, thì bộ trích xuất đặc trưng mặc định cho `task` đã cho sẽ được tải.

image_processor (`str` hoặc [BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor), *tuỳ chọn*) : Bộ xử lý ảnh sẽ được pipeline sử dụng để tiền xử lý ảnh cho mô hình. Đây có thể là định danh mô hình hoặc một bộ xử lý ảnh thực sự kế thừa từ [BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).  Các bộ xử lý ảnh được dùng cho các mô hình Vision và các mô hình đa phương thức yêu cầu đầu vào là ảnh. Các mô hình đ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à 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à chuỗi).

processor (`str` hoặc [ProcessorMixin](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessorMixin), *tùy chọn*) : Bộ xử lý sẽ được pipeline sử dụng để tiền xử lý dữ liệu cho mô hình. Đây có thể là một định danh mô hình hoặc một bộ xử lý thực kế thừa từ [ProcessorMixin](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessorMixin).  Các bộ xử lý đượ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, ví dụ 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ếu `model` không được chỉ định hoặc không phải là một chuỗi, thì bộ xử lý mặc định cho `config` sẽ đượ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 đó `revision` có 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](/docs/transformers/main/vi/main_classes/tokenizer#transformers.TokenizersBackend)) hay không.

token (`str` hoặc *bool*, *tùy chọn*) : Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Nếu `True`, sẽ sử dụng token được tạo khi chạy `hf auth login`.

device (`int` hoặc `str` hoặc `torch.device`, *optional*) : Xác định thiết bị (*ví dụ*, `"cpu"`, `"cuda:1"`, `"mps"`, hoặc một thứ tự GPU như `1`) mà pipeline này sẽ được cấp phát. Khi 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; mô hình sẽ được di chuyển đến đó cho bạn. Truyền `device="cpu"` (hoặc `-1`) để buộc dùng CPU. Không thể dùng cùng với `device_map`.

device_map (`str` hoặc `dict[str, Union[int, str, torch.device]`, *tùy chọn*) : Được gửi trực tiếp dưới dạng `model_kwargs` (chỉ là một lối tắt đơn giản hơn). Khi thư viện `accelerate` có mặt, đặt `device_map="auto"` để tự động tính toán `device_map` tối ưu nhất (xem [ở đây](https://huggingface.co/docs/accelerate/main/en/package_reference/big_modeling#accelerate.cpu_offload) để biết thêm thông tin).    Không sử dụng cả `device_map` và `device` cùng lúc vì chúng sẽ xung đột

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu. Truyền một `torch.float16`, `torch.bfloat16`, `torch.float32`, ... cụ thể để ghi đè.

trust_remote_code (`bool`, *tuỳ chọn*, mặc định là `False`) : Cho phép hay không cho phép sử dụng 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. Chỉ nên đặt tùy chọn này thành `True` cho 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ố theo từ khóa được truyền đến hàm `from_pretrained(..., **model_kwargs)` của mô hình.

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ề:** [Pipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.Pipeline)

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](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](tokenizer),
[image_processor](image_processor), [feature_extractor](feature_extractor) hoặc [processor](processors).
- Một [mô hình](model) 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ý.

Mặc dù có các đối số tùy chọn như `tokenizer`, `feature_extractor`, `image_processor` và `processor`, nhưng không nên chỉ định tất cả cùng một lúc. Nếu các thành phần này không được cung cấp, `pipeline` sẽ tự động cố gắng tải các thành phần cần thiết. Nếu bạn muốn cung cấp các thành phần này một cách rõ ràng, vui lòng tham khảo pipeline cụ thể để biết thêm chi tiết về các thành phần nào là bắt buộc.

Ví dụ:

```python
>>> 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. Tính năng này sẽ hoạt động 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`).

```python
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 model
```

Tuy nhiên, điều này không tự động mang lại lợi thế về hiệu suất. Tùy thuộc vào phần cứng, dữ liệu và mô hình cụ thể được sử dụng, kết quả có thể là tăng tốc 10 lần hoặc chậm đi 5 lần.

Ví dụ mà chủ yếu là tăng tốc:

```python
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
```

```text
# 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 độ:

```python
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.

```text
------------------------------
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. Số liệu 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 các 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:

```python
preprocessed = pipe.preprocess(inputs)
model_outputs = pipe.forward(preprocessed)
outputs = pipe.postprocess(model_outputs)
```

Bây giờ trở thành:

```python
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 quan tâm đến 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

```python
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

[Thực hiện một pipeline mới](../add_new_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[[transformers.AudioClassificationPipeline]]

#### transformers.AudioClassificationPipeline[[transformers.AudioClassificationPipeline]]

```python
transformers.AudioClassificationPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/audio_classification.py#L68)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

feature_extractor ([SequenceFeatureExtractor](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.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](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.SequenceFeatureExtractor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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_tutorial)

Pipeline này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=audio-classification).

#### __call__[[transformers.AudioClassificationPipeline.__call__]]

```python
__call__(inputs: numpy.ndarray | bytes | str | dict, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/audio_classification.py#L110)

**Tham số:**

inputs (`np.ndarray` hoặc `bytes` hoặc `str` hoặc `dict`) : Đầu vào là một trong các dạng sau: - `str` là tên tệp của tệp âm thanh, tệp sẽ được đọc ở tần số lấy mẫu đúng để 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 hiểu là nội dung của một tệp âm thanh và được *ffmpeg* xử lý theo cách tương tự. - (`np.ndarray` có hình dạng (n, ) với kiểu `np.float32` hoặc `np.float64`) Âm thanh thô ở tần số lấy mẫu đúng (không có kiểm tra thêm nào sẽ được thực hiện) - Dạng `dict` có thể được dùng để truyền âm thanh thô được lấy mẫu ở `sampling_rate` tù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 đó khóa `"raw"` hoặc `"array"` được dùng để chỉ dạng sóng âm thanh thô.

top_k (`int`, *tuỳ 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à `None` hoặ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`, *tùy chọn*, mặc định là "softmax") : Hàm được á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 `None` có sẵn trong Python sẽ mặc định thành "softmax", do đó bạn cần truyền chuỗi "none" để vô hiệu hóa mọi xử lý hậu kỳ.

**Trả về:** Một danh sách các `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](/docs/transformers/main/vi/main_classes/pipelines#transformers.AutomaticSpeechRecognitionPipeline) để biết thêm thông tin.

### AutomaticSpeechRecognitionPipeline[[transformers.AutomaticSpeechRecognitionPipeline]]

#### transformers.AutomaticSpeechRecognitionPipeline[[transformers.AutomaticSpeechRecognitionPipeline]]

```python
transformers.AutomaticSpeechRecognitionPipeline(model: PreTrainedModel, feature_extractor: typing.Union[ForwardRef('SequenceFeatureExtractor'), str, NoneType] = None, tokenizer: transformers.tokenization_python.PythonBackend | None = None, decoder: typing.Union[ForwardRef('BeamSearchDecoderCTC'), str, NoneType] = None, device: typing.Union[int, ForwardRef('torch.device'), NoneType] = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/automatic_speech_recognition.py#L147)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

feature_extractor ([SequenceFeatureExtractor](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.SequenceFeatureExtractor), *tùy chọn*) : Bộ trích xuất đặc trưng sẽ được pipeline sử dụng để mã hóa dạng sóng cho mô hình.

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend), *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](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

decoder (`pyctcdecode.BeamSearchDecoderCTC`, *tùy chọn*) : [BeamSearchDecoderCTC của PyCTCDecode](https://github.com/kensho-technologies/pyctcdecode/blob/2fd33dc37c4111417e08d89ccd23d28e9b308d19/pyctcdecode/decoder.py#L180) có thể được truyền vào để giải mã có tăng cường bằng mô hình ngôn ngữ. Xem [Wav2Vec2ProcessorWithLM](/docs/transformers/main/vi/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM) để biết thêm thông tin.

device (Union[`int`, `torch.device`], *optional*) : Chỉ số thiết bị cho hỗ trợ CPU/GPU. Đặt giá trị này thành `None` sẽ 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ụ:

```python
>>> 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](../pipeline_tutorial)

#### __call__[[transformers.AutomaticSpeechRecognitionPipeline.__call__]]

```python
__call__(inputs: numpy.ndarray | bytes | str | dict, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/automatic_speech_recognition.py#L232)

**Tham số:**

inputs (`np.ndarray` hoặc `bytes` hoặc `str` hoặc `dict`) : Đầu vào là một trong các dạng sau: - `str` là 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 hiểu là nội dung của một tệp âm thanh và được *ffmpeg* xử lý theo cách tương tự. - (`np.ndarray` có hình dạng (n, ) với kiểu `np.float32` hoặc `np.float64`) Âm thanh thô ở tốc độ lấy mẫu chính xác (không có kiểm tra thêm nào sẽ được thực hiện) - Dạng `dict` có thể được sử dụng để truyền âm thanh thô được lấy mẫu ở `sampling_rate` tù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ỏ qua `left` mẫu đầu tiên và `right` mẫu cuối cùng khi giải mã (nhưng vẫn được sử dụng ở giai đoạn suy luận để cung cấp thêm ngữ cảnh cho mô hình). Chỉ sử dụng `stride` với các mô hình CTC.

return_timestamps (*tùy chọn*, `str` hoặc `bool`) : Chỉ khả dụng cho các mô hình CTC thuần túy (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, timestamp có thể ở một trong hai định dạng: - `"char"`: pipeline sẽ trả về timestamp dọc theo 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 sau `0.5` và trước `0.6` giây. - `"word"`: pipeline sẽ trả về timestamp dọc theo 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 sau `0.5` và trước `0.9` giây.  Đối với mô hình Whisper, timestamp có thể ở một trong hai định dạng: - `"word"`: giống như trên đối với timestamp cấp từ của CTC. Timestamp cấp từ được dự đoán thông qua thuật toán *dynamic-time warping (DTW)*, một phép xấp xỉ timestamp cấp từ bằng cách kiểm tra các trọng số cross-attention. - `True`: pipeline sẽ trả về timestamp dọc theo văn bản cho các *segments* 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 sau `0.5` và trước `1.5` giâ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 timestamp cấp từ.

generate_kwargs (`dict`, *tùy chọn*) : Từ điển tham số hóa ad-hoc của `generate_config` để sử dụng cho lệnh gọi generation. Để có cái nhìn tổng quan đầy đủ về generate, hãy xem [hướng dẫn sau](https://huggingface.co/docs/transformers/en/main_classes/text_generation).

**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** (*optional(, `list[Dict]`) Khi sử dụng `return_timestamps`, `chunks` sẽ 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, *vd.* `[{"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](/docs/transformers/main/vi/main_classes/pipelines#transformers.AutomaticSpeechRecognitionPipeline) để biết thêm thông tin.

### TextToAudioPipeline[[transformers.TextToAudioPipeline]]

#### transformers.TextToAudioPipeline[[transformers.TextToAudioPipeline]]

```python
transformers.TextToAudioPipeline(*args, vocoder = None, sampling_rate = None, noise_scheduler = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/text_to_audio.py#L46)

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ụ:

```python
>>> 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](../pipeline_tutorial)

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_params` hoặc `TextToAudioPipeline.__call__.generate_kwargs`.

Ví dụ:

```python
>>> 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()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=text-to-speech).

#### __call__[[transformers.TextToAudioPipeline.__call__]]

```python
__call__(text_inputs, **forward_params)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/text_to_audio.py#L260)

**Tham số:**

text_inputs (`str`, `list[str]`, `ChatType`, hoặc `list[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 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, mẫu 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 vào phương thức sinh/forward của model. `forward_params` luôn được truyền vào model cơ sở.

generate_kwargs (`dict`, *tùy chọn*) : Từ điển tham số hóa ad-hoc của `generate_config` để sử dụng cho lệnh gọi generation. Để có cái nhìn tổng quan đầy đủ về generate, hãy xem [hướng dẫn sau](https://huggingface.co/docs/transformers/en/main_classes/text_generation). `generate_kwargs` chỉ được truyền cho model bên dưới nếu model đó là một model sinh, và có quyền ưu tiên cao hơn `forward_params`.

**Trả về:** `AudioOutput` hoặc một danh sách `AudioOutput`, là một `TypedDict` với hai khóa

- **audio** (`np.ndarray` có 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](/docs/transformers/main/vi/main_classes/pipelines#transformers.TextToAudioPipeline) để biết thêm thông tin.

### ZeroShotAudioClassificationPipeline[[transformers.ZeroShotAudioClassificationPipeline]]

#### transformers.ZeroShotAudioClassificationPipeline[[transformers.ZeroShotAudioClassificationPipeline]]

```python
transformers.ZeroShotAudioClassificationPipeline(**kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_audio_classification.py#L32)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

feature_extractor ([SequenceFeatureExtractor](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.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](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.SequenceFeatureExtractor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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 tệp âm thanh khi bạn cung cấp tệp âm thanh đó và một tập hợp các `candidate_labels`.

Mặc định `hypothesis_template` là : `"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ụ:
```python
>>> 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_tutorial). Pipeline phân loại âm thanh này hiện có thể được tải từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=zero-shot-audio-classification).

#### __call__[[transformers.ZeroShotAudioClassificationPipeline.__call__]]

```python
__call__(audios: numpy.ndarray | bytes | str | dict, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_audio_classification.py#L70)

**Tham số:**

audios (`str`, `list[str]`, `np.array` hoặc `list[np.array]`) : Pipeline xử lý ba loại đầu vào: - Một chuỗi chứa liên kết http trỏ đến một tệp âm thanh - Một chuỗi chứa đường dẫn cục bộ đến một tệp âm thanh - Một tệp â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`, *tùy 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.

**Trả về:**

Một danh sách các từ điển, mỗi từ điển chứa một mục cho mỗi nhãn được đề xuất. Mỗi từ điển chứa các khóa sau:
- **label** (`str`) -- Một trong các *candidate_labels* được đề xuất.
- **score** (`float`) -- Điểm số mà mô hình gán cho nhãn đó. Đây là một giá trị nằm trong khoảng từ 0 đến 1, được tính bằng `softmax` của `logits_per_audio`.

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[[transformers.DepthEstimationPipeline]]

#### transformers.DepthEstimationPipeline[[transformers.DepthEstimationPipeline]]

```python
transformers.DepthEstimationPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/depth_estimation.py#L25)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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_tutorial)

Pipeline ước lượng độ sâu này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=depth-estimation).

#### __call__[[transformers.DepthEstimationPipeline.__call__]]

```python
__call__(inputs: typing.Union[str, list[str], ForwardRef('Image.Image'), list['Image.Image']], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/depth_estimation.py#L66)

**Tham số:**

inputs (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết http trỏ đến một hình ảnh - Một 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, trong trường hợp sau thì phải được truyền dưới dạng một 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`, *optional*, 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**Trả về:**

Một từ điển hoặc một danh sách các từ điển chứa kết quả. Nếu đầu vào là một hình ảnh đơn, sẽ trả về một từ điển; nếu đầu vào là một danh sách nhiều hình ảnh, sẽ trả về một danh sách các từ điển tương ứng với các hình ảnh đó.

Các từ điển chứa các khóa sau:

- **predicted_depth** (`torch.Tensor`) -- Độ sâu dự đoán bởi mô hình dưới dạng `torch.Tensor`.
- **depth** (`PIL.Image`) -- Độ sâu dự đoán bởi mô hình dưới dạng `PIL.Image`.

Dự đoán độ sâu của hình ảnh được truyền vào dưới dạng đầu vào.

### ImageClassificationPipeline[[transformers.ImageClassificationPipeline]]

#### transformers.ImageClassificationPipeline[[transformers.ImageClassificationPipeline]]

```python
transformers.ImageClassificationPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_classification.py#L73)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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`, *tùy chọn*, mặc định là `"default"`) : Hàm được á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ụ:

```python
>>> 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_tutorial)

Pipeline phân loại hình ảnh này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=image-classification).

#### __call__[[transformers.ImageClassificationPipeline.__call__]]

```python
__call__(inputs: typing.Union[str, list[str], ForwardRef('Image.Image'), list['Image.Image']], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_classification.py#L127)

**Tham số:**

inputs (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết http trỏ đến một hình ảnh - Một 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, trong trường hợp sau thì phải được truyền dưới dạng một 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`, *tùy chọn*, mặc định là `"default"`) : Hàm được á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, 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 cho đầ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ể là:  - `"sigmoid"`: Áp dụng hàm sigmoid cho đầu ra. - `"softmax"`: Áp dụng hàm softmax cho đầu ra. - `"none"`: Không áp dụng bất kỳ hàm nào cho đầu ra.

top_k (`int`, *optional*, 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ố 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 đó.

timeout (`float`, *optional*, 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**Trả về:**

Một từ điển hoặc một danh sách các từ điển chứa kết quả. Nếu đầu vào là một hình ảnh đơn, sẽ trả về một từ điển; nếu đầu vào là một danh sách nhiều hình ảnh, sẽ trả về một danh sách các từ điển tương ứng với các hình ảnh đó.

Các từ điển chứa các khóa sau:

- **label** (`str`) -- Nhãn được mô hình xác định.
- **score** (`int`) -- Điểm do mô hình gán cho nhãn đó.

Gán nhãn cho hình ảnh được truyền vào dưới dạng đầu vào.

### ImageSegmentationPipeline[[transformers.ImageSegmentationPipeline]]

#### transformers.ImageSegmentationPipeline[[transformers.ImageSegmentationPipeline]]

```python
transformers.ImageSegmentationPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_segmentation.py#L27)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=image-segmentation).

#### __call__[[transformers.ImageSegmentationPipeline.__call__]]

```python
__call__(inputs: typing.Union[str, ForwardRef('Image.Image'), list[str], list['Image.Image']], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_segmentation.py#L101)

**Tham số:**

inputs (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết HTTP(S) trỏ đến một hình ảnh - Một 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`, *tùy chọn*) : Nhiệm vụ phân đoạn cần thực hiện, chọn [`semantic`, `instance` và `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`, *tuỳ 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`, *optional*, 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`, *optional*, mặc định là 0.5) : Ngưỡng chồng lấn của mặt nạ để loại bỏ các đoạn nhỏ, không liên tục.

timeout (`float`, *optional*, 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**Trả về:**

Nếu đầu vào là một hình ảnh đơn, sẽ trả về một danh sách các từ điển; nếu đầu vào là một danh sách nhiều hình ảnh, sẽ trả về một danh sách các danh sách từ điển tương ứng với từng hình ảnh.

Các từ điển chứa mặt nạ, nhãn và điểm (khi áp dụng) của từng đối tượng được phát hiện và bao gồm các khóa sau:

- **label** (`str`) -- Nhãn lớp được mô hình xác định.
- **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ạ.

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[[transformers.KeypointMatchingPipeline]]

#### transformers.KeypointMatchingPipeline[[transformers.KeypointMatchingPipeline]]

```python
transformers.KeypointMatchingPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/keypoint_matching.py#L67)

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__[[transformers.KeypointMatchingPipeline.__call__]]

```python
__call__(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)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/keypoint_matching.py#L96)

**Tham số:**

inputs (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết http trỏ đến một hình ảnh - Một 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 hình ảnh đơn lẻ hoặc một lô các cặp hình ảnh, trong trường hợp sau thì phải được truyền dưới dạng một 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.

threshold (`float`, *optional*, 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)` 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**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[[transformers.ObjectDetectionPipeline]]

#### transformers.ObjectDetectionPipeline[[transformers.ObjectDetectionPipeline]]

```python
transformers.ObjectDetectionPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/object_detection.py#L26)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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 đối tượng và lớp của chúng.

Ví dụ:

```python
>>> 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_tutorial)

Pipeline phát hiện đối tượng này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=object-detection).

#### __call__[[transformers.ObjectDetectionPipeline.__call__]]

```python
__call__(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/object_detection.py#L81)

**Tham số:**

inputs (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết HTTP(S) trỏ đến một hình ảnh - Một 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`, *tuỳ chọn*, mặc định là 0.5) : Xác suất cần thiết để đưa ra dự đoán.

timeout (`float`, *optional*, 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**Trả về:**

Một danh sách các từ điển hoặc một danh sách các danh sách từ điển chứa kết quả. Nếu đầu vào là một hình ảnh đơn, sẽ trả về một danh sách các từ điển; nếu đầu vào là một danh sách nhiều hình ảnh, sẽ trả về một danh sách các danh sách từ điển tương ứng với từng hình ảnh.

Các từ điển chứa các khóa sau:

- **label** (`str`) -- Nhãn lớp được mô hình xác định.
- **score** (`float`) -- Điểm do mô hình gán cho nhãn đó.
- **box** (`list[dict[str, int]]`) -- Hộp bao quanh của đối tượng được phát hiện ở kích thước gốc của ảnh.

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[[transformers.VideoClassificationPipeline]]

#### transformers.VideoClassificationPipeline[[transformers.VideoClassificationPipeline]]

```python
transformers.VideoClassificationPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/video_classification.py#L41)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

video_processor ([BaseVideoProcessor](/docs/transformers/main/vi/main_classes/video_processor#transformers.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](/docs/transformers/main/vi/main_classes/video_processor#transformers.BaseVideoProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=video-classification).

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__[[transformers.VideoClassificationPipeline.__call__]]

```python
__call__(inputs: str | list[str] | None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/video_classification.py#L105)

**Tham số:**

inputs (`str`, `list[str]`) : Pipeline xử lý ba loại video:  - Một chuỗi chứa liên kết http trỏ đến một video - Một chuỗi chứa đường dẫn cục bộ đến một video  Pipeline chấp nhận một video đơn lẻ hoặc một lô video, trong trường hợp đó chúng phải được truyền dưới dạng một 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`, *optional*, 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ố 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 đó.

num_frames (`int`, *tuỳ 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`, *tuỳ chọn*, mặc định là 1) : Tỷ lệ 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 `None` có 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ý hậu kỳ.

**Trả về:**

Một danh sách các từ điển hoặc một danh sách các danh sách từ điển chứa kết quả. Nếu đầu vào là một video đơn, sẽ trả về một danh sách gồm `top_k` từ điển; nếu đầu vào là một danh sách gồm nhiều video, sẽ trả về một danh sách các danh sách `top_k` từ điển tương ứng với các video.

Các từ điển chứa các khóa sau:

- **label** (`str`) -- Nhãn được mô hình xác định.
- **score** (`int`) -- Điểm do mô hình gán cho nhãn đó.

Gán nhãn cho video được truyền vào dưới dạng đầu vào.

### ZeroShotImageClassificationPipeline[[transformers.ZeroShotImageClassificationPipeline]]

#### transformers.ZeroShotImageClassificationPipeline[[transformers.ZeroShotImageClassificationPipeline]]

```python
transformers.ZeroShotImageClassificationPipeline(**kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_image_classification.py#L29)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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_tutorial)

Pipeline phân loại hình ảnh này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=zero-shot-image-classification).

#### __call__[[transformers.ZeroShotImageClassificationPipeline.__call__]]

```python
__call__(image: typing.Union[str, list[str], ForwardRef('Image.Image'), list['Image.Image']], candidate_labels: list, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_image_classification.py#L83)

**Tham số:**

image (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết http trỏ đến một hình ảnh - Một 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 hình ả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`, *optional*, 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**Trả về:**

Một danh sách các từ điển, mỗi từ điển chứa một mục cho mỗi nhãn được đề xuất. Mỗi từ điển chứa các khóa sau:
- **label** (`str`) -- Một trong các *candidate_labels* được đề xuất.
- **score** (`float`) -- Điểm số mà mô hình gán cho nhãn đó. Đây là một giá trị nằm trong khoảng từ 0 đến 1, được tính bằng `softmax` của `logits_per_image`.

Gán nhãn cho hình ảnh được truyền vào dưới dạng đầu vào.

### ZeroShotObjectDetectionPipeline[[transformers.ZeroShotObjectDetectionPipeline]]

#### transformers.ZeroShotObjectDetectionPipeline[[transformers.ZeroShotObjectDetectionPipeline]]

```python
transformers.ZeroShotObjectDetectionPipeline(**kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_object_detection.py#L23)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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_tutorial)

Pipeline phát hiện đối tượng này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=zero-shot-object-detection).

#### __call__[[transformers.ZeroShotObjectDetectionPipeline.__call__]]

```python
__call__(image: typing.Union[str, ForwardRef('Image.Image'), list[dict[str, typing.Any]]], candidate_labels: str | list[str] | None = None, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_object_detection.py#L75)

**Tham số:**

image (`str`, `PIL.Image` hoặc `list[dict[str, Any]]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa địa chỉ http trỏ đến một hình ảnh - Một 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 các hình ảnh, hoặc một dataset hoặc một generator như sau:  ```python >>> from transformers import pipeline  >>> detector = pipeline(model="google/owlvit-base-patch32", task="zero-shot-object-detection") >>> detector( ...     [ ...         { ...             "image": "http://images.cocodataset.org/val2017/000000039769.jpg", ...             "candidate_labels": ["cat", "couch"], ...         }, ...         { ...             "image": "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.25, '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}}], [{'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}}]] ```

candidate_labels (`str` hoặc `list[str]` hoặc `list[list[str]]`) : Những gì mô hình cần nhận diện trong hình ảnh.

threshold (`float`, *tuỳ chọn*, mặc định là 0.1) : Xác suất cần thiết để đưa ra dự đoán.

top_k (`int`, *tuỳ chọn*, mặc định là None) : Số lượng dự đoán hàng đầu sẽ được trả về bởi pipeline. Nếu số lượng được cung cấp là `None` hoặc lớn hơn số lượng dự đoán khả dụng, giá trị mặc định sẽ là số lượng dự đoán.

timeout (`float`, *optional*, 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 thời gian chờ và lệnh gọi có thể bị chặn vĩnh viễn.

**Trả về:**

Một danh sách các danh sách chứa kết quả dự đoán, mỗi danh sách tương ứng với một hình ảnh đầu vào. Mỗi danh sách chứa các từ điển với các khóa sau:

- **label** (`str`) -- Truy vấn văn bản tương ứng với đối tượng được tìm thấy.
- **score** (`float`) -- Điểm tương ứng với đối tượng (nằm trong khoảng từ 0 đến 1).
- **box** (`dict[str,int]`) -- Hộp bao quanh của đối tượng được phát hiện ở kích thước gốc của ảnh. Đây là một từ điển có các khóa `x_min`, `x_max`, `y_min`, `y_max`.

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[[transformers.FillMaskPipeline]]

#### transformers.FillMaskPipeline[[transformers.FillMaskPipeline]]

```python
transformers.FillMaskPipeline(model: PreTrainedModel, tokenizer: PreTrainedTokenizer | None = None, feature_extractor: PreTrainedFeatureExtractor | None = None, image_processor: BaseImageProcessor | None = None, video_processor: BaseVideoProcessor | None = None, processor: ProcessorMixin | None = None, task: str = '', device: int | torch.device | None = None, binary_output: bool = False, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/fill_mask.py#L28)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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`, *tuỳ chọn*, mặc định là 5) : Số lượng dự đoán cần trả về.

targets (`str` hoặc `list[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ộ từ vựng. Nếu các mục tiêu được cung cấp không có trong từ vựng của mô hình, chúng sẽ được tách token 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ố theo từ khóa được truyền đến tokenizer.

#### __call__[[transformers.FillMaskPipeline.__call__]]

```python
__call__(inputs: str | list[str], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/fill_mask.py#L234)

**Tham số:**

inputs (`str` hoặc `list[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 (`str` hoặc `list[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ộ từ vựng. Nếu các mục tiêu được cung cấp không có trong từ vựng của mô hình, chúng sẽ được tách token 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).

top_k (`int`, *optional*) : 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 việc 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[[transformers.TableQuestionAnsweringPipeline]]

#### transformers.TableQuestionAnsweringPipeline[[transformers.TableQuestionAnsweringPipeline]]

```python
transformers.TableQuestionAnsweringPipeline(args_parser = <transformers.pipelines.table_question_answering.TableQuestionAnsweringArgumentHandler object at 0x7fa655900f50>, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/table_question_answering.py#L78)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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_tutorial)

Pipeline trả lời câu hỏi dạng bảng này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=table-question-answering).

#### __call__[[transformers.TableQuestionAnsweringPipeline.__call__]]

```python
__call__(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/table_question_answering.py#L208)

**Tham số:**

table (`pd.DataFrame` hoặc `Dict`) : 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 (`str` hoặc `list[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`) : Xác định việc thực hiện suy luận theo tuần tự hay theo lô. Việc xử lý 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ệ trong các chuỗi, do bản chất hội thoại của chúng.

padding (`bool`, `str` hoặc [PaddingStrategy](/docs/transformers/main/vi/internal/file_utils#transformers.utils.PaddingStrategy), *tuỳ chọn*, mặc định là `False`) : Kích hoạt và kiểm soát việc đệm. Chấp nhận các giá trị sau:  - `True` hoặc `'longest'`: Đệm đến độ dài của chuỗi dài nhất trong lô (hoặc không đệm nếu chỉ có một chuỗi duy nhất được cung cấp). - `'max_length'`: Đệm đến độ dài tối đa được chỉ định bằng tham số `max_length` hoặ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. - `False` hoặ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`, `str` hoặc `TapasTruncationStrategy`, *optional*, mặc định là `False`) : Kích hoạt và kiểm soát việc cắt bớt. Chấp nhận các giá trị sau:  - `True` hoặc `'drop_rows_to_fit'`: Cắt bớt xuống độ dài tối đa được chỉ định bằng tham số `max_length` hoặ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 bớt theo từng hàng, loại bỏ các hàng khỏi bảng. - `False` hoặ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 chấp nhận được của mô hình).

**Returns:** `A dictionary or a list of dictionaries containing results`

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 sau `AGGREGATOR >`.
- **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ó một aggregator, hàm này sẽ trả về 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ụ:

```python
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:

Ví dụ:

```python
import pandas as pd

table = pd.DataFrame.from_dict(data)
```

### TextClassificationPipeline[[transformers.TextClassificationPipeline]]

#### transformers.TextClassificationPipeline[[transformers.TextClassificationPipeline]]

```python
transformers.TextClassificationPipeline(**kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/text_classification.py#L43)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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`, *tùy chọn*, mặc định là `"default"`) : Hàm được á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](../task_summary#sequence-classification) để biết thêm thông tin.

Ví dụ:

```python
>>> 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_tutorial)

Pipeline phân loại văn bản này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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ả. Đối với 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](https://huggingface.co/models?filter=text-classification).

#### __call__[[transformers.TextClassificationPipeline.__call__]]

```python
__call__(inputs: str | list[str] | dict[str, str] | list[dict[str, str]], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/text_classification.py#L105)

**Tham số:**

inputs (`str` hoặc `list[str]` hoặc `dict[str]`, hoặc `list[dict[str]]`) : Một hoặc nhiều văn bản cần phân loại. Để sử dụng các cặp văn bản cho việc phân loại, 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`, *tuỳ chọn*, mặc định là `1`) : Số lượng kết quả cần trả về.

function_to_apply (`str`, *tùy chọn*, mặc định là `"default"`) : Hàm được á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, 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, 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.  Các giá trị có thể 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 các `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[[transformers.TextGenerationPipeline]]

#### transformers.TextGenerationPipeline[[transformers.TextGenerationPipeline]]

```python
transformers.TextGenerationPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/text_generation.py#L23)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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)
```

```python
>>> 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](../pipeline_tutorial). 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](../generation_strategies) và [Sinh văn bản](text_generation).

Pipeline tạo ngôn ngữ này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=text-generation) và danh sách các [mô hình hội thoại](https://huggingface.co/models?other=conversational) trên [huggingface.co/models].

#### __call__[[transformers.TextGenerationPipeline.__call__]]

```python
__call__(text_inputs, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/text_generation.py#L251)

**Tham số:**

text_inputs (`str`, `list[str]`, `ChatType`, hoặc `list[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 chuỗi hoặc danh sách 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 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ành `True`, 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 các kết quả.

return_full_text (`bool`, *tùy chọn*, mặc định là `True`) : Nếu đặt thành `False`, chỉ 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ới `return_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 đặt `clean_up_tokenization_spaces` của tokenizer.

continue_final_message( `bool`, *optional*) : Tham số 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à `True` khi tin nhắn cuối cùng trong hội thoại đầu vào có vai trò `assistant` và `False` trong 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 (`str` hoặc `list[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`, *tùy chọn*) : Mặc định, pipeline này không xử lý các lần sinh dài (những lần sinh vượt quá độ dài tối đa của mô hình theo một hình thức 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 tin :https://github.com/huggingface/transformers/issues/14033#issuecomment-948385227). Tham số này 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ớt phía bên trái của đầu vào và để 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 sang 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 đến `apply_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 đến phương thức generate của mô hình (xem phương thức generate [tại đây](./text_generation)).

**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ó khi `return_text=True`) -- Văn bản đã được tạo.
- **generated_token_ids** (`torch.Tensor`, có khi `return_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[[transformers.TokenClassificationPipeline]]

#### transformers.TokenClassificationPipeline[[transformers.TokenClassificationPipeline]]

```python
transformers.TokenClassificationPipeline(args_parser = <transformers.pipelines.token_classification.TokenClassificationArgumentHandler object at 0x7fa656229450>, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/token_classification.py#L91)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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`, *optional*) : 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_strategy` khác `NONE`. Giá trị của đối 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ước `tokenizer.model_max_length - stride` token ở mỗi bước.

aggregation_strategy (`str`, *tùy chọn*, mặc định là `"none"`) : Chiến lược để hợp nhất (hoặc không) 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ể vô tình tách 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 đến 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 với hai thực thể khác nhau. - "first" : (chỉ hoạt động trên các mô hình dựa trên từ) Sẽ sử dụng chiến lược `SIMPLE` ngoại trừ việc các từ không thể có các thẻ khác nhau. Các từ sẽ đơn giản sử dụng thẻ của token đầu tiên của từ khi có sự mơ hồ. - "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 `SIMPLE` ngoại trừ việc các từ không thể có các thẻ khác nhau. điểm số sẽ được trung bình hóa trước tiên giữa 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 `SIMPLE` ngoại trừ việc các từ không thể có các thẻ khác nhau. Thực thể của từ sẽ đơn giản 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ể](../task_summary#named-entity-recognition) để biết thêm thông tin.

Ví dụ:

```python
>>> 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_tutorial)

Pipeline nhận diện token này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=token-classification).

#### __call__[[transformers.TokenClassificationPipeline.__call__]]

```python
__call__(inputs: str | list[str], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/token_classification.py#L210)

**Tham số:**

inputs (`str` hoặc `List[str]`) : Một hoặc nhiều văn bản (hoặc một danh sách văn bản) để phân loại token. Có thể được phân tách token trước khi `is_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ụng `start` và `end`.
- **score** (`float`) -- Xác suất tương ứng cho `entity`.
- **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ó khi `aggregation_strategy="none"`) -- Chỉ số của token tương ứng trong câu.
- **start** (`int`, *tùy 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.

#### aggregate_words[[transformers.TokenClassificationPipeline.aggregate_words]]

```python
aggregate_words(entities: list, aggregation_strategy: AggregationStrategy)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/token_classification.py#L522)

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[[transformers.TokenClassificationPipeline.gather_pre_entities]]

```python
gather_pre_entities(sentence: str, input_ids: ndarray, scores: ndarray, offset_mapping: list[tuple[int, int]] | None, special_tokens_mask: ndarray, aggregation_strategy: AggregationStrategy, word_ids: list[int | None] | None = None, word_to_chars_map: list[tuple[int, int]] | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/token_classification.py#L398)

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[[transformers.TokenClassificationPipeline.group_entities]]

```python
group_entities(entities: list)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/token_classification.py#L585)

**Tham số:**

entities (`dict`) : Các thực thể được pipeline dự đoán.

Tìm và nhóm các token liền kề có cùng thực thể được dự đoán.

#### group_sub_entities[[transformers.TokenClassificationPipeline.group_sub_entities]]

```python
group_sub_entities(entities: list)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/token_classification.py#L550)

**Tham số:**

entities (`dict`) : Các thực thể được pipeline dự đoán.

Nhóm các token liền kề có cùng thực thể được dự đoán lại với nhau.

### ZeroShotClassificationPipeline[[transformers.ZeroShotClassificationPipeline]]

#### transformers.ZeroShotClassificationPipeline[[transformers.ZeroShotClassificationPipeline]]

```python
transformers.ZeroShotClassificationPipeline(args_parser = <transformers.pipelines.zero_shot_classification.ZeroShotClassificationArgumentHandler object at 0x7fa65595a0d0>, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_classification.py#L44)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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 số lượng lớp tiềm năng được cố định trước, mà 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 rất 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ụ:

```python
>>> 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_tutorial)

Pipeline NLI này hiện có thể được tải từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?search=nli).

#### __call__[[transformers.ZeroShotClassificationPipeline.__call__]]

```python
__call__(sequences: str | list[str], *args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/zero_shot_classification.py#L159)

**Tham số:**

sequences (`str` hoặc `list[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 (`str` hoặc `list[str]`) : Tập hợp các nhãn lớp có thể có để phân loại mỗi chuỗi vào. 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`, *tùy chọn*, mặc định là `"This example is {}."`) : Mẫu được sử dụng để chuyển đổi mỗi nhãn thành một giả thuyết theo phong cách NLI. Mẫu này phải bao gồm cú pháp {} hoặc tương tự để chèn nhãn ứng viên vào mẫu. Ví dụ, mẫu mặc định là `"This example is {}."` Với nhãn ứng viên `"sports"`, điều này sẽ được đưa vào mô hình như `"<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 với các mẫu khác nhau tùy thuộc vào bối cảnh 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ếu `False`, 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 bằng 1. Nếu `True`, 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ố suy luận so với điểm số mâu thuẫ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:

- **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 xuất hiện.
- **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](/docs/transformers/main/vi/main_classes/pipelines#transformers.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[[transformers.DocumentQuestionAnsweringPipeline]]

#### transformers.DocumentQuestionAnsweringPipeline[[transformers.DocumentQuestionAnsweringPipeline]]

```python
transformers.DocumentQuestionAnsweringPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/document_question_answering.py#L206)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ụ:

```python
>>> 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_tutorial)

Pipeline trả lời câu hỏi từ tài liệu này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=document-question-answering).

#### __call__[[transformers.DocumentQuestionAnsweringPipeline.__call__]]

```python
__call__(image: typing.Union[ForwardRef('Image.Image'), str, list[dict[str, typing.Any]]], question: str | None = None, word_boxes: tuple[str, list[float]] | None = None, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/document_question_answering.py#L338)

**Tham số:**

image (`str` hoặc `PIL.Image`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết http trỏ đến một hình ảnh - Một 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. Nếu được cung cấp một hình ảnh đơn lẻ, nó có thể được phát sóng (broadcast) đến nhiều câu hỏi.

question (`str`) : Một câu hỏi cần đặt ra cho tài liệu.

word_boxes (`list[str, tuple[float, float, float, float]]`, *tùy chọn*) : 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 mô hình 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 chạy lại mỗi lần.

top_k (`int`, *tuỳ chọn*, mặc định là 1) : Số lượng câu trả lời cần trả về (sẽ được chọn theo thứ tự khả năng xuất hiện). 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`, *optional*, mặc định là 128) : Nếu các từ trong tài liệu quá dài để khớp với câu hỏi cho mô hình, chúng 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`, *tuỳ chọn*, mặc định là 15) : Độ dài tối đa của các câu trả lời được 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`, *optional*, mặc định là 384) : Độ 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 chunk được truyền vào mô hình. Bối cảnh sẽ được chia thành nhiều chunk (sử dụng `doc_stride` làm phần chồng lấn) nếu cần.

max_question_len (`int`, *tuỳ chọn*, mặc định là 64) : Độ dài tối đa của câu hỏi sau khi token hóa. Nó sẽ bị cắt ngắn nếu cần.

handle_impossible_answer (`bool`, *tùy chọn*, mặc định là `False`) : Xác định có chấp nhận "bất khả thi" 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`, *optional*, 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 thời gian chờ và lệnh 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ặc `word_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ặc `word_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[[transformers.FeatureExtractionPipeline]]

#### transformers.FeatureExtractionPipeline[[transformers.FeatureExtractionPipeline]]

```python
transformers.FeatureExtractionPipeline(model: PreTrainedModel, tokenizer: PreTrainedTokenizer | None = None, feature_extractor: PreTrainedFeatureExtractor | None = None, image_processor: BaseImageProcessor | None = None, video_processor: BaseVideoProcessor | None = None, processor: ProcessorMixin | None = None, task: str = '', device: int | torch.device | None = None, binary_output: bool = False, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/feature_extraction.py#L15)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.float16`, `torch.bfloat16`, `torch.float32`, ... cụ thể để ghi đè.

tokenize_kwargs (`dict`, *tùy chọn*) : Từ điển bổ sung các đối số theo từ khóa được truyền đến tokenizer.

return_tensors (`bool`, *tùy chọn*) : Nếu `True`, 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ụ:

```python
>>> 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_tutorial)

Pipeline trích xuất đặc trưng này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models).

#### __call__[[transformers.FeatureExtractionPipeline.__call__]]

```python
__call__(*args: str | list[str], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/feature_extraction.py#L78)

**Tham số:**

args (`str` hoặc `list[str]`) : Một hoặc nhiều văn bản (hoặc một danh sách các văn bản) để lấy các đặc trưng.

**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 văn bản đầu vào.

### ImageFeatureExtractionPipeline[[transformers.ImageFeatureExtractionPipeline]]

#### transformers.ImageFeatureExtractionPipeline[[transformers.ImageFeatureExtractionPipeline]]

```python
transformers.ImageFeatureExtractionPipeline(model: PreTrainedModel, tokenizer: PreTrainedTokenizer | None = None, feature_extractor: PreTrainedFeatureExtractor | None = None, image_processor: BaseImageProcessor | None = None, video_processor: BaseVideoProcessor | None = None, processor: ProcessorMixin | None = None, task: str = '', device: int | torch.device | None = None, binary_output: bool = False, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_feature_extraction.py#L23)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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ố theo 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ếu `False`, 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ụ:

```python
>>> 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_tutorial)

Pipeline trích xuất đặc trưng hình ảnh này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models).

#### __call__[[transformers.ImageFeatureExtractionPipeline.__call__]]

```python
__call__(*args: typing.Union[str, ForwardRef('Image.Image'), list['Image.Image'], list[str]], **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_feature_extraction.py#L94)

**Tham số:**

images (`str`, `list[str]`, `PIL.Image` hoặc `list[PIL.Image]`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết http trỏ đến một hình ảnh - Một 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, trong trường hợp sau thì phải được truyền dưới dạng một 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`, *optional*, 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 thời gian chờ và lệnh gọi 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[[transformers.ImageTextToTextPipeline]]

#### transformers.ImageTextToTextPipeline[[transformers.ImageTextToTextPipeline]]

```python
transformers.ImageTextToTextPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_text_to_text.py#L53)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

processor ([ProcessorMixin](/docs/transformers/main/vi/main_classes/processors#transformers.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](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessorMixin). Processor là một đối tượng tổng hợp có thể chứa `tokenizer`, `feature_extractor` và `image_processor`.

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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 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ụ:

```python
>>> 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'}]
```

```python
>>> 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_tutorial)

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](https://huggingface.co/models?pipeline_tag=image-text-to-text).

#### __call__[[transformers.ImageTextToTextPipeline.__call__]]

```python
__call__(images: typing.Union[str, list[str], list[list[str]], ForwardRef('Image.Image'), list['Image.Image'], list[list['Image.Image']], list[dict], NoneType] = None, text: str | list[str] | list[dict] | None = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/image_text_to_text.py#L215)

**Tham số:**

images (`str`, `list[str]`, `PIL.Image, `list[PIL.Image]`, `list[dict[str, Union[str, PIL.Image]]]`) : The pipeline handles three types of images:  - A string containing a HTTP(s) link pointing to an image - A string containing a local path to an image - An image loaded in PIL directly  The pipeline accepts either a single image or a batch of images. Finally, this pipeline also supports the chat format (see `text`) containing images and text in this argument.

text (str, list[str], `list[dict[str, Union[str, PIL.Image]]]`) : Văn bản được sử dụng để 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ành `True`, 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 các kết quả.

return_full_text (`bool`, *tùy chọn*, mặc định là `True`) : Nếu đặt thành `False`, chỉ 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ới `return_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 đặt `clean_up_tokenization_spaces` của tokenizer.

continue_final_message( `bool`, *optional*) : Tham số 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à `True` khi tin nhắn cuối cùng trong hội thoại đầu vào có vai trò `assistant` và `False` trong 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ó khi `return_text=True`) -- Văn bản đã được tạo.
- **generated_token_ids** (`torch.Tensor`, có khi `return_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[[transformers.AnyToAnyPipeline]]

#### transformers.AnyToAnyPipeline[[transformers.AnyToAnyPipeline]]

```python
transformers.AnyToAnyPipeline(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/any_to_any.py#L67)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

processor ([ProcessorMixin](/docs/transformers/main/vi/main_classes/processors#transformers.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](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessorMixin). Processor là một đối tượng tổng hợp có thể chứa `tokenizer`, `feature_extractor` và `image_processor`.

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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 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ụ:

```python
>>> 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'}]
```

```python
>>> 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_tutorial)

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](https://huggingface.co/models?pipeline_tag=any-to-any).

#### __call__[[transformers.AnyToAnyPipeline.__call__]]

```python
__call__(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] = None, videos: 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] = None, audio: typing.Union[str, list[str], numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/any_to_any.py#L258)

**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 các từ điển chứa văn bản của tin nhắn và kiểu của tin nhắn.

images (`str`, `list[str]`, `ImageInput`) : Pipeline xử lý ba loại hình ảnh:  - Một chuỗi chứa liên kết HTTP(s) trỏ đến một hình ảnh - Một 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:  - Một chuỗi chứa liên kết HTTP(s) trỏ đến một video - Một 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:  - Một chuỗi chứa liên kết HTTP(s) trỏ đến một tệp âm thanh - Một chuỗi chứa đường dẫn cục bộ đến một tệp âm thanh - Một tệp âm thanh được nạp trực tiếp trong PIL  Pipeline chấp nhận một tệp âm thanh đơn lẻ hoặc một lô các tệp âm thanh. Cuối cùng, pipeline này cũng hỗ trợ định dạng chat (xem `text`) chứa cả âm thanh 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ành `True`, 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 các kết quả.

return_full_text (`bool`, *tùy chọn*, mặc định là `True`) : Nếu đặt thành `False`, chỉ 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ới `return_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 đặt `clean_up_tokenization_spaces` của tokenizer.

continue_final_message( `bool`, *optional*) : Tham số 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à `True` khi tin nhắn cuối cùng trong hội thoại đầu vào có vai trò `assistant` và `False` trong 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 khi `return_text=True` và `generation_mode="text"`) -- Văn bản đã được tạo ra.
- **generated_audio** (`np.ndarray`, có khi `generation_mode="audio"`) -- Âm thanh đã được tạo.
- **generated_image** (`PIL.Image.Image`, có khi `generation_mode="image"`) -- Ảnh đã được tạo.
- **generated_token_ids** (`torch.Tensor`, có mặt khi `return_tensors=True` và `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[[transformers.MaskGenerationPipeline]]

#### transformers.MaskGenerationPipeline[[transformers.MaskGenerationPipeline]]

```python
transformers.MaskGenerationPipeline(**kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/mask_generation.py#L36)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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. Các số lớn 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 quanh hay không.

output_rle_masks (`bool`, *tùy chọn*, mặc định là `False`) : Có xuất các mặt nạ ở định dạng `RLE` hay 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 lúc. Mặc định là `64`.

Pipeline hoạt động theo 3 bước:
1. `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 (bounding boxes) 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, hãy xem hàm `_generate_crop_boxes`. Ảnh cũng được tiền xử lý bằng `image_processor`. Hàm này `yields` một minibatch gồm `points_per_batch`.

2. `forward`: truyền các đầu ra của `preprocess` và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_embeddings` và đảm bảo rằng gradient không được tính toán, đồng thời các tensor và mô hình nằm trên cùng một thiết bị.

3. `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 (chạy 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_thresh` và `stability_scores`. Đồng thời á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ụ:

```python
>>> 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_tutorial)

Pipeline phân đoạn này hiện có thể được nạp từ [pipeline()](/docs/transformers/main/vi/main_classes/pipelines#transformers.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](https://huggingface.co/models?filter=mask-generation).

#### __call__[[transformers.MaskGenerationPipeline.__call__]]

```python
__call__(image: typing.Union[str, ForwardRef('Image.Image'), list[str], list['Image.Image']], *args: Any, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/mask_generation.py#L143)

**Tham số:**

image (`str`, `List[str]`, `PIL.Image` hoặc `List[PIL.Image]`) : Ảnh hoặc danh sách các ảnh.

mask_threshold (`float`, *optional*, 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`, *optional*, mặc định là 0.88) : Ngưỡng lọc trong `[0,1]` được áp dụng cho chất lượng mặt nạ dự đoán của mô hình.

stability_score_thresh (`float`, *optional*, mặc định là 0.95) : Ngưỡng lọc trong `[0,1]`, sử dụng độ ổn định của mask dưới 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`, *optional*, mặc định là 1) : Số lượng cần dịch chuyển ngưỡng cắt khi tính điểm ổn định.

crops_nms_thresh (`float`, *optional*, 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`, *optional*, mặc định là 0) : Nếu `crops_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`, *optional*, mặc định là `512 / 1500`) : Đặt mức độ mà các vùng cắt chồng lấn lên nhau. Ở lớp cắt đầu tiên, các vùng cắt sẽ chồng lấn một phần bằng phân số này của độ dài ảnh. Các lớp sau có nhiều vùng cắt hơn sẽ giảm mức chồng lấn này xuống.

crop_n_points_downscale_factor (`int`, *tuỳ chọn*, mặc định là `1`) : Số điểm trên mỗi cạnh được lấy mẫu ở lớp n sẽ bị thu nhỏ theo crop_n_points_downscale_factor**n.

timeout (`float`, *optional*, 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 thời gian chờ và lệnh 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`[[transformers.Pipeline]]

#### transformers.Pipeline[[transformers.Pipeline]]

```python
transformers.Pipeline(model: PreTrainedModel, tokenizer: PreTrainedTokenizer | None = None, feature_extractor: PreTrainedFeatureExtractor | None = None, image_processor: BaseImageProcessor | None = None, video_processor: BaseVideoProcessor | None = None, processor: ProcessorMixin | None = None, task: str = '', device: int | torch.device | None = None, binary_output: bool = False, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L763)

**Tham số:**

model ([PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.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](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel).

tokenizer ([PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)) : Bộ mã hóa (tokenizer) 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ừ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend).

feature_extractor ([SequenceFeatureExtractor](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.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](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.SequenceFeatureExtractor).

image_processor ([BaseImageProcessor](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor)) : Bộ xử lý hình ả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](/docs/transformers/main/vi/main_classes/image_processor#transformers.BaseImageProcessor).

processor ([ProcessorMixin](/docs/transformers/main/vi/main_classes/processors#transformers.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](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessorMixin). Processor là một đối tượng tổng hợp có thể chứa `tokenizer`, `feature_extractor` và `image_processor`.

task (`str`, mặc định là `""`) : Một định danh tác vụ cho pipeline.

num_workers (`int`, *tuỳ 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 worker sẽ được sử dụng.

batch_size (`int`, *tuỳ 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](https://huggingface.co/transformers/main_classes/pipelines.html#pipeline-batching) .

args_parser ([ArgumentHandler](/docs/transformers/main/vi/internal/pipelines_utils#transformers.pipelines.ArgumentHandler), *tuỳ 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 (`int` hoặc `str` hoặc `torch.device`, *optional*) : 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 di chuyển đến đó một cách tự động. Truyền `device="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ột `torch.device`/`str` bản địa. Tham số này không thể kết hợp với một mô hình đã được nạp qua `accelerate` (tức là mô hình có `hf_device_map`).

dtype (`str` hoặc `torch.dtype`, *tuỳ 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 đến `from_pretrained`. Mặc định là `"auto"`, nạp mô hình với dtype mà nó được lưu (đọc từ `config.dtype` của checkpoint, nếu không thì suy ra từ trọng số). Truyền một `torch.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](/docs/transformers/main/vi/main_classes/pipelines#transformers.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[[transformers.Pipeline.check_model_type]]

```python
check_model_type(supported_models: list[str] | dict)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L1126)

**Tham số:**

supported_models (`list[str]` hoặc `dict`) : Danh sách các model được hỗ trợ bởi pipeline, hoặc một từ điển có giá trị là các lớp model.

Kiểm tra xem lớp mô hình có được pipeline hỗ trợ hay không.

#### device_placement[[transformers.Pipeline.device_placement]]

```python
device_placement()
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L1012)

**Trả về:**

Trình quản lý ngữ cảnh

Context Manager cho phép phân bổ tensor trên thiết bị do người dùng chỉ định.

Ví dụ:

```python
# Explicitly ask for tensor allocation on CUDA device :0
pipe = pipeline(..., device=0)
with pipe.device_placement():
    # Every tensor allocation will be done on the request device
    output = pipe(...)
```

#### ensure_tensor_on_device[[transformers.Pipeline.ensure_tensor_on_device]]

```python
ensure_tensor_on_device(**inputs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L1094)

**Tham số:**

inputs (các đối số từ khóa phải là `torch.Tensor`, phần còn lại sẽ bị bỏ qua) : Các tensor cần đặt trên `self.device`.

Đệ quy trên danh sách **thôi**. --

**Trả về:** `dict[str, torch.Tensor]`

Tương tự như `inputs` nhưng trên thiết bị phù hợp.

Đảm bảo các tensor PyTorch nằm trên thiết bị được chỉ định.

#### postprocess[[transformers.Pipeline.postprocess]]

```python
postprocess(model_outputs: ModelOutput, **postprocess_parameters: dict)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L1193)

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 một 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ố).

#### predict[[transformers.Pipeline.predict]]

```python
predict(X)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L991)

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[[transformers.Pipeline.preprocess]]

```python
preprocess(input_: Any, **preprocess_parameters: dict)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L1172)

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[[transformers.Pipeline.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/hub.py#L822)

**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 điệp để cam kết 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`, *tuỳ chọn*) : Có nên đặt kho thành riêng tư hay không. Nếu là `None` (mặc định), kho sẽ là 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 (`bool` hoặc `str`, *tùy chọn*) : Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Nếu `True` (mặc định), sẽ sử dụng token được tạo khi chạy `hf 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 hoặc commit trực tiếp hay không.

max_shard_size (`int` hoặc `str`, *không bắt buộc*, 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 nhỏ (sharding). Các checkpoint sau khi chia nhỏ 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ụ:

```python
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[[transformers.Pipeline.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, **kwargs: Any)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L939)

**Tham số:**

save_directory (`str` hoặc `os.PathLike`) : Đường dẫn đến thư mục nơi sẽ lưu trữ. 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()](/docs/transformers/main/vi/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

Lưu mô hình và tokenizer của pipeline.

#### biến đổi[[transformers.Pipeline.transform]]

```python
transform(X)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/base.py#L985)

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__().

