目錄???????
一、引言?
二、自動分詞器(AutoTokenizer)
2.1 概述
2.2 主要特點
2.3 代碼示例
三、總結
一、引言?
?這里的Transformers指的是huggingface開發的大模型庫,為huggingface上數以萬計的預訓練大模型提供預測、訓練等服務。
🤗 Transformers 提供了數以千計的預訓練模型,支持 100 多種語言的文本分類、信息抽取、問答、摘要、翻譯、文本生成。它的宗旨是讓最先進的 NLP 技術人人易用。
🤗 Transformers 提供了便于快速下載和使用的API,讓你可以把預訓練模型用在給定文本、在你的數據集上微調然后通過 model hub 與社區共享。同時,每個定義的 Python 模塊均完全獨立,方便修改和快速研究實驗。
🤗 Transformers 支持三個最熱門的深度學習庫: Jax, PyTorch 以及 TensorFlow — 并與之無縫整合。你可以直接使用一個框架訓練你的模型然后用另一個加載和推理。
本文重點介紹自動分詞器(AutoTokenizer)。
二、自動分詞器(AutoTokenizer)
2.1 概述
AutoTokenizer
是Hugging Face transformers
庫中的一個非常實用的類,它屬于自動工廠模式的一部分。這個設計允許開發者通過一個統一的接口來加載任何預訓練模型對應的分詞器(tokenizer),而無需直接指定分詞器的精確類型。這意味著,當你知道模型的名稱時,你可以使用AutoTokenizer
自動獲取與該模型匹配的分詞器,而不需要了解分詞器的具體實現細節。
2.2 主要特點
- ?模型兼容性:通過模型名稱自動匹配合適的分詞器,支持BERT、RoBERTa、Albert、DistilBERT、T5等眾多模型。
- ?便捷性:簡化了代碼,無需根據模型類型手動選擇分詞器類。
- ?靈活性:對于新發布的模型,只要其分詞器在Hugging Face模型庫中可用,
AutoTokenizer.from_pretrained
就能加載。
2.3 代碼示例
使用這些特殊標記的例子,比如在BERT模型中準備輸入:?
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"#使用國內hf鏡像
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
os.environ["TF_ENABLE_ONEDNN_OPTS"] = "0"from transformers import AutoTokenizer# 加載BERT的分詞器
tokenizer = AutoTokenizer.from_pretrained('bert-base-chinese')# 使用分詞器處理文本
text = "你好,我在北京的互聯網公司工作"
tokenized_text = tokenizer.tokenize(text)
print(tokenized_text)
"""
['你', '好', ',', '我', '在', '北', '京', '的', '互', '聯', '網', '公', '司', '工', '作']
"""# 或者直接編碼為模型輸入的格式
encoded_text = tokenizer.encode(text)
print(encoded_text)
"""
[101, 872, 1962, 8024, 2769, 1762, 1266, 776, 4638, 757, 5468, 5381, 1062, 1385, 2339, 868, 102]
"""# 對于更復雜的輸入準備,可以使用encode_plus
encoded_plus = tokenizer.encode_plus(text, add_special_tokens=True)
print(encoded_plus)
"""
{'input_ids': [101, 872, 1962, 8024, 2769, 1762, 1266, 776, 4638, 757, 5468, 5381, 1062, 1385, 2339, 868, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}
"""
參數說明?
- from_pretrained: 這不是一個方法,而是用來創建AutoTokenizer實例的類方法。它根據提供的模型名稱或路徑加載對應的分詞器。
- tokenize: 將文本字符串轉換為詞元(tokens)的列表。
- encode: 將文本轉換為模型輸入的數字序列(token IDs)。
- encode_plus: 除了生成token IDs,還提供額外的數據結構,如attention_mask、token_type_ids等,適合復雜輸入準備。以及提供句子編碼拼接功能。
- batch_encode_plus: 對一批文本進行編碼,可以自動處理填充和截斷,以確保所有輸入具有相同的長度。
- decode: 將token IDs轉換回文本字符串。
- save_pretrained: 保存分詞器到本地目錄,以便之后使用。
- 特定于模型的方法: 不同的分詞器可能有特定的方法,如處理特定的編碼規則、特殊標記等,但這些不是所有分詞器都通用的。
這些方法的具體行為和可用參數可能會根據加載的分詞器類型(如BertTokenizer、RobertaTokenizer等)有所不同
三、總結
本文對使用transformers的AutoTokenizer進行介紹,他最大的特點是允許開發者通過一個統一的接口來加載任何預訓練模型對應的分詞器(tokenizer),而無需直接指定分詞器的精確類型。這意味著,當知道模型的名稱時,可以使用AutoTokenizer
自動獲取與該模型匹配的分詞器。
如果您還有時間,可以看看我的其他文章:
《AI—工程篇》
AI智能體研發之路-工程篇(一):Docker助力AI智能體開發提效
AI智能體研發之路-工程篇(二):Dify智能體開發平臺一鍵部署
AI智能體研發之路-工程篇(三):大模型推理服務框架Ollama一鍵部署
AI智能體研發之路-工程篇(四):大模型推理服務框架Xinference一鍵部署
AI智能體研發之路-工程篇(五):大模型推理服務框架LocalAI一鍵部署
《AI-模型篇》
AI智能體研發之路-模型篇(一):大模型訓練框架LLaMA-Factory在國內網絡環境下的安裝、部署及使用
AI智能體研發之路-模型篇(二):DeepSeek-V2-Chat 訓練與推理實戰
AI智能體研發之路-模型篇(三):中文大模型開、閉源之爭
AI智能體研發之路-模型篇(四):一文入門pytorch開發
AI智能體研發之路-模型篇(五):pytorch vs tensorflow框架DNN網絡結構源碼級對比
AI智能體研發之路-模型篇(六):【機器學習】基于tensorflow實現你的第一個DNN網絡
AI智能體研發之路-模型篇(七):【機器學習】基于YOLOv10實現你的第一個視覺AI大模型
AI智能體研發之路-模型篇(八):【機器學習】Qwen1.5-14B-Chat大模型訓練與推理實戰