十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Model Card for *{{ model_name | default(“Model ID“, true) }}*

Model Card for *{{ model_name | default(“Model ID“, true) }}* Model Card for{{ model_name | default(Model ID, true) }}【免费下载链接】argillaArgilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets项目地址: https://gitcode.com/GitHub_Trending/ar/argillaThis model has been created with Argilla, trained with{{ library_name }}.模板开头还有一段醒目的 HTML 注释提醒用户这是自动生成的卡片 This model card has been generated automatically according to the information the ArgillaTrainer had access to. You should probably proofread and complete it, then remove this comment. 紧接着是 **Model training** 小节这是模板最核心的产出——一段可复制粘贴的训练复现代码。它的条件分支完全由 card_data 中的字段驱动 - **数据集加载方式由 _is_on_huggingface 决定** jinja dataset FeedbackDataset.from_{% if _is_on_huggingface %}huggingface({{ dataset_name }}){% else %}argilla({% if dataset_name %}{{ dataset_name }}{% else %}...{% endif %}){% endif %}即当数据集在 Hub 上时生成from_huggingface(...)否则生成from_argilla(...)。该标志位的判定逻辑见下文__post_init__分析。训练任务调用由trainer_task_call注入每个框架的卡片数据类重写_trainer_task__repr__()生成形如task TrainingTask.for_text_classification(text..., label...)的字符串若用户自定义了formatting_func源码会直接getsource()把函数源码一并写入卡片见 model_card.py L176-L184 与 L547-L559。ArgillaTrainer构造参数按需出现lang、model、tokenizer、train_size、seed、gpu_id、framework_kwargs均为 Jinja 条件行{% if %}只有用户实际提供的参数才会出现在生成的代码块中避免输出误导性的冗余参数。update_config_call可选段{% if update_config_call %}{{ update_config_call }}{% endif %}这是trainer.update_config(...)的调用渲染其内容如何被计算是本文第 4 节的主线。trainer.train(output_dir{{ output_dir }})output_dir由训练时的train(output_dir...)参数回填见第 5 节调用链。2.3 预测示例与Model Details元信息小节模板中的 You can test the type of predictions 代码块渲染{{ predict_call }}。不同框架生成的示例差异很大例如文本分类trainer.predict(This is awesome!)model_card.py L238-L239问答transformers由于该类型模型没有内置predict模板会渲染一段pipeline(question-answering, model...)的底层库用法L271-L287sentence-transformers渲染trainer.predict([[text_a, text_b], ...])的成对输入示例L515-L525TRL按任务类型SFT / 奖励建模 / PPO / DPO分别渲染GPT2LMHeadModel.from_pretrained生成、AutoModelForSequenceClassification打分、AutoModelForCausalLM.generate等不同示例L396-L475。Model Details 小节则是一组带默认兜底值的元信息行未提供的字段渲染为[More Information Needed]- **Developed by:** {{ developers | default([More Information Needed], true)}} - **Shared by [optional]:** {{ shared_by | default([More Information Needed], true)}} - **Model type:** {{ model_type | default([More Information Needed], true)}} - **Language(s) (NLP):** {{ language | default([More Information Needed], true)}} - **License:** {{ license | default([More Information Needed], true)}} - **Finetuned from model [optional]:** {{ finetuned_from | default([More Information Needed], true)}}若提供了repo字段还会渲染可选的 Model Sources 小节模板 L67-L73。2.4 被注释掉的可选章节与版本信息模板后半段包含大量HTML 注释形式的可选章节骨架UsesDirect Use / Downstream Use / Out-of-Scope Use、Bias, Risks, and Limitations含 Recommendations、Training DetailsTraining Metrics、Training Hyperparameters例如 training regime 的取值说明、Environmental Impact碳排估算的硬件/时长/云区域等字段、Citation、Glossary、Model Card Authors、Model Card Contact。这些章节默认不渲染处于注释中留给用户在 proofread 阶段按需启用——这正是模板首段注释所建议的工作流。唯一无条件渲染的技术规格小节记录生成环境## Technical Specifications [optional] ### Framework Versions - Python: {{ version[python] }} - Argilla: {{ version[argilla] }}version字典在FrameworkCardData中初始化model_card.py L87-L93默认值即python_version()与argilla_v1._version.version是initFalse的字段用户无法覆盖。3. 数据源解析FrameworkCardData与__post_init__模板变量的填表人是 FrameworkCardData dataclass字段按来源分为三类① 用户显式提供通常经由ArgillaTrainer的framework_kwargs中的model_card_kwargs透传见第 5 节字段说明language语言或语言列表进入 YAML front-matterlicense许可证进入 front-mattermodel_name/model_id卡片标题 / 预训练模型 ID如facebook/bart-large-mnlidataset_name/dataset_id训练所用 Argilla 数据集tags默认[argilla]框架子类会追加框架/任务标签model_summary/model_description填入模板首段与 Model Descriptiondevelopers/shared_by/model_type/finetuned_from/repoModel Details 元信息行② 控制变量_is_on_huggingface默认False控制from_huggingface/from_argilla分支。③ 由 trainer 内部回填framework、train_size、seed、framework_kwargs、task、output_dir、library_name、update_config_kwargs即用户调用过trainer.update_config(...)的参数例如 transformers 场景下就是trainer_kwargs见 model_card.py L95-L97 注释。__post_init__L99-L105做了三件关键事若提供了dataset_name调用 is_on_huggingface() 探测该数据集是否真的在 Hub 上用huggingface_hub.dataset_info实际请求仓库 ID 段数大于 2 直接判否以此设置_is_on_huggingface——这决定了生成代码是from_huggingface还是from_argilla由FRAMEWORK_TO_NAME_MAPPING把framework枚举映射为library_name渲染到 trained with{library_name} 一句由TRAINING_TASK_MAPPING把任务实例映射为task_type字符串如for_text_classification供各子类生成对应的任务调用与预测示例。to_dict()L140-L159是最终汇合点以 dataclass 全部字段为底再叠加框架相关的渲染结果——framework枚举值、trainer_task_call、predict_call条件性地加入framework_kwargs转str、update_config_call最后允许子类通过_to_dict()追加私有变量。4. 框架差异化实现以 transformers 与 TRL 为例model_card/init.py 导出的九个卡片数据类覆盖全部受支持的框架。几个有代表性的实现细节transformersTransformersModelCardData._trainer_task__repr__()按task_type区分参数形态——文本分类用textdataset.field_by_name(...), labeldataset.question_by_name(...)问答则变为question..., context..., answer...未实现的任务类型直接抛NotImplementedErrorL246-L269。其update_config差异化的基准是transformers.TrainingArguments.__init__的全部默认参数L289-L295因此卡片中只会显示用户改过的超参例如trainer.update_config( { learning_rate: 5e-05, warmup_steps: 100 } )差异化算法核心是 _updated_arguments()先把默认参数集合与训练后模型实际持有的参数集合分别经_prepare_dict_for_comparison()归一化嵌套 dict 转带__dict占位符的 tuple、list 转带__list占位符的 tuple、类对象取其__name__、其余取str再做集合差集最后由_prepare_dict_for_return()还原。这个只渲染用户改动的语义由单元测试 test_model_card.py 参数化覆盖测试用例刻意构造了标量改动、嵌套 dict、混合 list、类对象及其实例四种边界场景。SetFit基准参数合并了SetFitModel._from_pretrained/from_pretrained与SetFitTrainer.__init__的默认值并显式剔除model_id、device、train_dataset等内部自动设置的键L303-L325避免把这些框架替用户填的参数误标为用户配置tags 默认为[text-classification, setfit, argilla]。PEFT基准是 LoRA 的内置默认r8、lora_alpha16、lora_dropout0.1、biasnone等L346-L362并剔除task_type。spaCy / spacy-transformers卡片数据携带lang默认spacy.blank(en)、gpu_id-1CPU、optimizeefficiency、pipeline[ner]_to_dict()仅在freeze_tok2vec非默认True时才输出该键update_transformer相反——只在为False时输出L170-L221。TRL除按任务渲染预测示例外其update_config基准按任务类型区分——PPO 任务当前渲染不友好而直接返回空由用户手写SFT/奖励建模则用{evaluation_strategy: epoch, logging_steps: 1, num_train_epochs: 1}作基准L477-L492。各框架 trainer 侧的对接点统一是get_model_card_data(**card_data_kwargs)例如 transformers 版在 transformers.py L81-L106 中按任务类型补 tagstext-classification或question-answering加上transformers、argilla并把self.trainer_kwargs作为update_config_kwargs传入卡片数据类。5. 完整调用链从train到README.md与push_to_hub模板渲染的触发点有两个都位于训练基类 base.py参数入口ArgillaBaseTrainer.__init__从framework_kwargs中弹出保留键model_card_kwargsL116-L120文档字符串明确写道A special key (model_card_kwargs) is reserved for the arguments that can be passed to the model card。也就是说用户在构造 trainer 时可以这样预填卡片元信息trainer ArgillaTrainer( datasetdataset, tasktask, frameworktransformers, framework_kwargs{ model_card_kwargs: { model_name: my-model, license: apache-2.0, language: en, model_summary: A text classifier trained with Argilla feedback data., } }, )【免费下载链接】argillaArgilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets项目地址: https://gitcode.com/GitHub_Trending/ar/argilla创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表