1、简介Hugging Face 是一个提供先进自然语言处理NLP工具的平台支持 Transformer 模型的开发和应用。它拥有庞大的模型库和社区资源能够满足从研究到工业应用的各种需求。---------------------------------------------------------------------------------------------------------------------是目前最大的ai免费开源社区但是是在外网https://huggingface.co/里面有模型和训练虚要的数据集等调用api的话记得打开权限2. 注册和安装2.1. 注册 Hugging Face 账户访问 Hugging Face 官方网站点击右上角的“Sign Up”按钮。输入你的邮箱、用户名和密码完成注册流程。注册成功后你可以访问模型库、数据集和文档也可以管理你的个人模型和项目。2.2. 安装 Hugging Face 库Hugging Face 提供了 transformers 库用于加载和使用模型。你可以使用以下命令来安装它pip install transformers电脑须安装基础环境Anaconda, CUDA, cuDNN, pytorch如果你还需要安装其他依赖库如 datasets 和 tokenizers可以使用以下命令pip install transformers datasets tokenizers3. 模型探索与下载3.1. 在模型库中搜索模型Hugging Face 提供了一个庞大的模型库你可以通过以下步骤来查找所需的模型访问模型库页面。在搜索栏中输入关键字如 “GPT-2” 或 “BERT”然后点击搜索。你可以使用左侧的过滤器按任务、框架、语言等条件筛选模型。3.2. 下载与加载模型到指定文件夹找到所需模型后你可以通过代码将模型下载到指定的文件夹并加载模型这里因为网络问题采用https://www.modelscope.cn/models/openai-community/gpt2/summary魔搭社区下载# 将模型下载到本地调用 from transformers import AutoModelForCausalLM, AutoTokenizer # 将模型和分词器下载到本地并指定保存路径 model_name openai-community/gpt2 cache_dir L2/day03_hugging_face/model/uer/gpt2-chinese-cluecorpussmall #模型下载 from modelscope import snapshot_download model_dir snapshot_download(model_name) # 下载模型 AutoModelForCausalLM.from_pretrained(model_name, cache_dircache_dir) # 下载分词工具 AutoTokenizer.from_pretrained(model_name, cache_dircache_dir) print(f模型分词器已下载到: {cache_dir})3.3. 大模型结构调用的话 config.json在哪就用哪个3.4 模型配置文件切片最大值特殊字符3.5 简单使用# 本地离线调用 GPT2 模型进行文本生成 # 该脚本假设模型文件已经下载到本地指定目录 from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline # 设置模型所在目录必须包含 config.json 等文件 # 注意请使用绝对路径并根据实际情况修改 model_dir rF:\26_01\第六期\python\L2_study\L2\day03_hugging_face\model\gpt2 # 从本地目录加载模型和分词器 model AutoModelForCausalLM.from_pretrained(model_dir) # 加载预训练模型 tokenizer AutoTokenizer.from_pretrained(model_dir) # 加载对应的分词器 # 使用加载的模型和分词器创建文本生成 pipeline # 设置 devicecuda 表示使用 GPU 加速如果没有 GPU 可改为 cpu generator pipeline(text-generation, modelmodel, tokenizertokenizer, devicecuda) # 生成文本 output generator(你好我是一款语言模型。, max_length50, num_return_sequences1) # 带详细参数注释的生成调用供参考当前未启用 # output generator( # 你好我是一款语言模型。, # 生成文本的输入种子文本 (prompt)。模型会根据这个初始文本生成后续的文本 # max_length50, # 指定生成文本的最大长度。这里的 50 表示生成的文本最多包含 50 个标记 (tokens) # num_return_sequences1, # 参数指定返回多少个独立生成的文本序列。值为 1 表示只生成并返回一段文本。 # truncationTrue, # 该参数决定是否截断输入文本以适应模型的最大输入长度。如果 True超出模型最大输入长度的部分将被截断如果 False模型可能无法处理过长的输入。 # temperature0.7, # 该参数控制生成文本的随机性。值越低生成的文本越保守倾向于选择概率较高的词值越高生成的文本越多样倾向于选择更多不同的词。0.7 是常用值表示适中的随机性。 # top_k50, # 该参数限制模型在每一步生成时仅从概率最高的 k 个词中选择下一个词。这里 top_k50 表示模型在生成每个词时只考虑概率最高的前 50 个候选词从而减少低概率词的出现。 # top_p0.9, # 该参数又称为核采样进一步限制模型生成时的词汇选择范围。它会选择一组累积概率达到 p 的词汇模型只会从这个概率集合中采样。top_p0.9 意味着只考虑累积概率达到 90% 的词汇。 # clean_up_tokenization_spacesTrue # 该参数控制生成的文本中是否清理分词时引入的空格。如果设置为 True生成的文本会清除多余的空格如果为 False则保留空格。 # ) print(output)3.6 词生成的原理比如告诉模型按照下文续写 “今天天气... ”gpt2模型会输出 21128 个概率选最好的输出但是完全最好的会出现重复的效果所以要添加随机值4. Hugging Face API 使用在线访问存在网络问题下载使用参考3.54.1. 匿名访问 API你可以通过 Hugging Face Inference API 匿名使用预训练模型注意匿名访问的模型受限于公开权限import requests API_URL https://api-inference.huggingface.co/models/bert-base-chinese response requests.post(API_URL) print(response.json())4.2. 使用 Inference API注册并获取 API Token 后你可以使用自己的 API Token 进行访问from transformers import pipeline # 替换为你的实际 API Token API_TOKEN your_api_token_here # 使用 API Token generator pipeline(text-generation, modelgpt2, use_auth_tokenAPI_TOKEN) output generator(The future of AI is, max_length50) print(output)5. 使用介绍5.1. 文本生成5.1.1. 在线访问使用Hugging Face的Inference API调用中文文本生成模型import requests API_URL https://api-inference.huggingface.co/models/uer/gpt2-chinese-cluecorpussmall API_TOKEN your_api_token_here #替换为你的实际API Token headers {Authorization: fBearer {API_TOKEN}} #发送文本生成请求 response requests.post(API_URL, headersheaders, json{inputs: 你好我是一款语言模型}) print(response.json())5.1.2. 下载到本地访问你可以将模型下载到本地然后使用 pipeline 进行文本生成from transformers import pipeline # 本地加载中文GPT-2模型 generator pipeline(text-generation, modeluer/gpt2-chinese-cluecorpussmall, cache_dir./my_model_cache) # 生成文本 output generator(你好我是一款语言模型, max_length50, num_return_sequences1) print(output)5.2. 文本分类5.2.1. 在线访问使用 Hugging Face 的Inference API 调用中文文本分类模型import requests API_URL https://api-inference.huggingface.co/models/uer/roberta-base-finetuned-cluener2020-chinese API_TOKEN your_api_token_here # 替换为你的实际 API Token headers {Authorization: fBearer {API_TOKEN}} # 发送文本分类请求 response requests.post(API_URL, headersheaders, json{inputs: 我喜欢用Hugging Face的 transformers 库!}) print(response.json())5.2.2. 采用魔搭下载到本地访问你可以将模型下载到本地然后使用 pipeline 进行文本分类:from transformers import BertTokenizer, BertForSequenceClassification, pipeline #模型下载 from modelscope import snapshot_download model_name google-bert/bert-base-chinese # 设置绝对下载路径 cache_dir rF:\26_01\第六期\python\L2_study\L2\day03_hugging_face\model # model_dir snapshot_download(mode_name,cache_dir) # 显式指定参数名避免参数顺序错误 model_dir snapshot_download(model_name, cache_dircache_dir) print(f模型已下载到{model_dir}) # 加载模型和分词器 model BertForSequenceClassification.from_pretrained(model_dir) tokenizer BertTokenizer.from_pretrained(model_dir) # 创建分类pipeline classifier pipeline(tasktext-classification, modelmodel, tokenizertokenizer, devicecuda) # 进行文本分类 result classifier(你好我是一款语言模型) print(result) print(model)6. datasets 库核心方法6.1. 加载数据集你可以通过 load_dataset 方法加载任何数据集from datasets import load_dataset # 加载GLUE数据集 dataset load_dataset(glue, mrpc) print(dataset)6.3. 加载磁盘数据你可以加载本地磁盘上的数据from datasets import load_from_disk # 从本地磁盘加载数据集 dataset load_from_disk(./my_dataset) print(dataset)
02-Hugging Face 简单介绍
1、简介Hugging Face 是一个提供先进自然语言处理NLP工具的平台支持 Transformer 模型的开发和应用。它拥有庞大的模型库和社区资源能够满足从研究到工业应用的各种需求。---------------------------------------------------------------------------------------------------------------------是目前最大的ai免费开源社区但是是在外网https://huggingface.co/里面有模型和训练虚要的数据集等调用api的话记得打开权限2. 注册和安装2.1. 注册 Hugging Face 账户访问 Hugging Face 官方网站点击右上角的“Sign Up”按钮。输入你的邮箱、用户名和密码完成注册流程。注册成功后你可以访问模型库、数据集和文档也可以管理你的个人模型和项目。2.2. 安装 Hugging Face 库Hugging Face 提供了 transformers 库用于加载和使用模型。你可以使用以下命令来安装它pip install transformers电脑须安装基础环境Anaconda, CUDA, cuDNN, pytorch如果你还需要安装其他依赖库如 datasets 和 tokenizers可以使用以下命令pip install transformers datasets tokenizers3. 模型探索与下载3.1. 在模型库中搜索模型Hugging Face 提供了一个庞大的模型库你可以通过以下步骤来查找所需的模型访问模型库页面。在搜索栏中输入关键字如 “GPT-2” 或 “BERT”然后点击搜索。你可以使用左侧的过滤器按任务、框架、语言等条件筛选模型。3.2. 下载与加载模型到指定文件夹找到所需模型后你可以通过代码将模型下载到指定的文件夹并加载模型这里因为网络问题采用https://www.modelscope.cn/models/openai-community/gpt2/summary魔搭社区下载# 将模型下载到本地调用 from transformers import AutoModelForCausalLM, AutoTokenizer # 将模型和分词器下载到本地并指定保存路径 model_name openai-community/gpt2 cache_dir L2/day03_hugging_face/model/uer/gpt2-chinese-cluecorpussmall #模型下载 from modelscope import snapshot_download model_dir snapshot_download(model_name) # 下载模型 AutoModelForCausalLM.from_pretrained(model_name, cache_dircache_dir) # 下载分词工具 AutoTokenizer.from_pretrained(model_name, cache_dircache_dir) print(f模型分词器已下载到: {cache_dir})3.3. 大模型结构调用的话 config.json在哪就用哪个3.4 模型配置文件切片最大值特殊字符3.5 简单使用# 本地离线调用 GPT2 模型进行文本生成 # 该脚本假设模型文件已经下载到本地指定目录 from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline # 设置模型所在目录必须包含 config.json 等文件 # 注意请使用绝对路径并根据实际情况修改 model_dir rF:\26_01\第六期\python\L2_study\L2\day03_hugging_face\model\gpt2 # 从本地目录加载模型和分词器 model AutoModelForCausalLM.from_pretrained(model_dir) # 加载预训练模型 tokenizer AutoTokenizer.from_pretrained(model_dir) # 加载对应的分词器 # 使用加载的模型和分词器创建文本生成 pipeline # 设置 devicecuda 表示使用 GPU 加速如果没有 GPU 可改为 cpu generator pipeline(text-generation, modelmodel, tokenizertokenizer, devicecuda) # 生成文本 output generator(你好我是一款语言模型。, max_length50, num_return_sequences1) # 带详细参数注释的生成调用供参考当前未启用 # output generator( # 你好我是一款语言模型。, # 生成文本的输入种子文本 (prompt)。模型会根据这个初始文本生成后续的文本 # max_length50, # 指定生成文本的最大长度。这里的 50 表示生成的文本最多包含 50 个标记 (tokens) # num_return_sequences1, # 参数指定返回多少个独立生成的文本序列。值为 1 表示只生成并返回一段文本。 # truncationTrue, # 该参数决定是否截断输入文本以适应模型的最大输入长度。如果 True超出模型最大输入长度的部分将被截断如果 False模型可能无法处理过长的输入。 # temperature0.7, # 该参数控制生成文本的随机性。值越低生成的文本越保守倾向于选择概率较高的词值越高生成的文本越多样倾向于选择更多不同的词。0.7 是常用值表示适中的随机性。 # top_k50, # 该参数限制模型在每一步生成时仅从概率最高的 k 个词中选择下一个词。这里 top_k50 表示模型在生成每个词时只考虑概率最高的前 50 个候选词从而减少低概率词的出现。 # top_p0.9, # 该参数又称为核采样进一步限制模型生成时的词汇选择范围。它会选择一组累积概率达到 p 的词汇模型只会从这个概率集合中采样。top_p0.9 意味着只考虑累积概率达到 90% 的词汇。 # clean_up_tokenization_spacesTrue # 该参数控制生成的文本中是否清理分词时引入的空格。如果设置为 True生成的文本会清除多余的空格如果为 False则保留空格。 # ) print(output)3.6 词生成的原理比如告诉模型按照下文续写 “今天天气... ”gpt2模型会输出 21128 个概率选最好的输出但是完全最好的会出现重复的效果所以要添加随机值4. Hugging Face API 使用在线访问存在网络问题下载使用参考3.54.1. 匿名访问 API你可以通过 Hugging Face Inference API 匿名使用预训练模型注意匿名访问的模型受限于公开权限import requests API_URL https://api-inference.huggingface.co/models/bert-base-chinese response requests.post(API_URL) print(response.json())4.2. 使用 Inference API注册并获取 API Token 后你可以使用自己的 API Token 进行访问from transformers import pipeline # 替换为你的实际 API Token API_TOKEN your_api_token_here # 使用 API Token generator pipeline(text-generation, modelgpt2, use_auth_tokenAPI_TOKEN) output generator(The future of AI is, max_length50) print(output)5. 使用介绍5.1. 文本生成5.1.1. 在线访问使用Hugging Face的Inference API调用中文文本生成模型import requests API_URL https://api-inference.huggingface.co/models/uer/gpt2-chinese-cluecorpussmall API_TOKEN your_api_token_here #替换为你的实际API Token headers {Authorization: fBearer {API_TOKEN}} #发送文本生成请求 response requests.post(API_URL, headersheaders, json{inputs: 你好我是一款语言模型}) print(response.json())5.1.2. 下载到本地访问你可以将模型下载到本地然后使用 pipeline 进行文本生成from transformers import pipeline # 本地加载中文GPT-2模型 generator pipeline(text-generation, modeluer/gpt2-chinese-cluecorpussmall, cache_dir./my_model_cache) # 生成文本 output generator(你好我是一款语言模型, max_length50, num_return_sequences1) print(output)5.2. 文本分类5.2.1. 在线访问使用 Hugging Face 的Inference API 调用中文文本分类模型import requests API_URL https://api-inference.huggingface.co/models/uer/roberta-base-finetuned-cluener2020-chinese API_TOKEN your_api_token_here # 替换为你的实际 API Token headers {Authorization: fBearer {API_TOKEN}} # 发送文本分类请求 response requests.post(API_URL, headersheaders, json{inputs: 我喜欢用Hugging Face的 transformers 库!}) print(response.json())5.2.2. 采用魔搭下载到本地访问你可以将模型下载到本地然后使用 pipeline 进行文本分类:from transformers import BertTokenizer, BertForSequenceClassification, pipeline #模型下载 from modelscope import snapshot_download model_name google-bert/bert-base-chinese # 设置绝对下载路径 cache_dir rF:\26_01\第六期\python\L2_study\L2\day03_hugging_face\model # model_dir snapshot_download(mode_name,cache_dir) # 显式指定参数名避免参数顺序错误 model_dir snapshot_download(model_name, cache_dircache_dir) print(f模型已下载到{model_dir}) # 加载模型和分词器 model BertForSequenceClassification.from_pretrained(model_dir) tokenizer BertTokenizer.from_pretrained(model_dir) # 创建分类pipeline classifier pipeline(tasktext-classification, modelmodel, tokenizertokenizer, devicecuda) # 进行文本分类 result classifier(你好我是一款语言模型) print(result) print(model)6. datasets 库核心方法6.1. 加载数据集你可以通过 load_dataset 方法加载任何数据集from datasets import load_dataset # 加载GLUE数据集 dataset load_dataset(glue, mrpc) print(dataset)6.3. 加载磁盘数据你可以加载本地磁盘上的数据from datasets import load_from_disk # 从本地磁盘加载数据集 dataset load_from_disk(./my_dataset) print(dataset)