Comment apprendre l'EAD à un LLM : distillation de LLM (3bis/3)
Ce précédent billet s'attachait à spécialiser le modèle Llama3.2-3B-Instruct par du fine-tuning supervisé (SFT) selon la méthode QLora, avec l'objectif d'obtenir un modèle léger et complètement customisé capable de générer des instruments de recherche en EAD/XML à partir d’instructions en langage naturel : l'expérimentation consistait à faire du post-training sur ce modèle déjà aligné en mode conversationnel grâce à un dataset d'exemples (prompts et réponses sous forme de blocs EAD/XML), et aboutissait à délivrer un nouveau modèle, en réalité une adaptation partielle de Llama3.2-3B-Instruct, qui donnait sur quelques tests à la volée des résultats globalement plutôt bons mais encore améliorables .
L'écosystème de l'IA évoluant très vite, et sortie de DeepSeek-R1 aidant, de nouveaux paradigmes liés à l'évolution des modèles d'IA générative ont émergé depuis (nouveaux modèles de raisonnement, nouvelles solutions d'injection d'étapes de raisonnement dans des SLM, nouvelles techniques d'optimisation de l'inférence...) justifiant de revisiter cette problématique de création sur mesure de LLM destiné à automatiser la génération de métadonnées structurées.
En effet, l’avènement des modèles de raisonnement, capables de générer à la fois du texte et les étapes de réflexion ayant mené à la production de ce texte, renouvelle la manière dont d’autres modèles plus légers peuvent être fine-tunés ou réalignés, notamment en récupérant et ré-injectant des chains-of-thoughts (CoT) durant l’inférence ou le post-training, aboutissant ainsi à la création de SLMs spécialisés encore plus performants, de surcroît avec nettement d'efforts. Parmi ces nouvelles stratégies contribuant indirectement à introduire des chaines de raisonnement durant la phase d'inférence, deux d'entre elles semblent offrir de très bons résultats, qui plus est sur des petits modèles et avec très peu de données (comparativement au SFT classique) : le Reinforcement Learning (RL) par Group Relative Policy Optimization (GRPO) et la distillation de LLM (décrites plus bas)
Ce billet illustre donc une adaptation de la problématique d’apprentissage de l’EAD à un LLM à l’aune de ces considérations (et par exemple de ce retour d'expérience de chercheurs de Stanford et de l’Université de Washington), en créant cette fois un nouveau modèle de raisonnement spécialisé sur l'EAD obtenu par distillation des connaissances et capacités de réflexion d'un gros LLM (gemini-2.0-flash-thinking-exp) dans un SLM très léger (Qwen2.5-0.5B-Instruct), le tout donnant des résultats vraiment très intéressants et prometteurs ! Il est même assez impressionnant de constater le bénefice du transfert de connaissances et les gains de performance obtenus sur un si petit modèle ayant très peu de connaissances sur l'EAD à la base, et avec un dataset assez réduit !
Ce qui marche pour l'EAD fonctionne évidemment pour l'apprentissage d'autres formats de données (Marc, Dublin Core, TEI, RDF...), et cette expérimentation peut se généraliser sur d'autres typologies de données métiers structurées.
Quelques éléments de contexte
DeepSeek-R1 et DeepSeek-R1-Zero sont des modèles ouverts et entraînés à moindre coût (par rapport à celui d’un GPT s’entend), dont les performances s’appuient entre autres sur le recours innovant à une technique de RL habituellement utilisée en post-training pour l’alignement des modèles ainsi que sur du Mixture-of-Experts (MoE) pendant l’inférence.
Avec ces caractéristiques techniques assez inédites, c’est en creux la problématique générale du passage à l’échelle (scaling) des LLMs qui est soulevée. En effet, poussé par les principaux fournisseurs de LLMs (OpenAI, Meta, Google,.. et même Mistral d’une certaine manière) qui en font leur coeur de stratégie, le principe théorique dominant pour l'amélioration des performances des modèles repose sur l’accroissement conjugé de la taille des modèles (c'est-à dire du nombre de poids dans le réseau de neurones Transformers) et du volume de données mobilisées pour le pre-training, auquel on peut aussi ajouter l'enjeu de l’augmentation de la fenêtre contextuelle. En vertu de cette hypothèse s'est ainsi ouverte une course aux GPU et aux datacenters, les fournisseurs commerciaux de LLM et les gouvernements mobilisant des milliards de dollars pour des infrastructures de stockage et de calculs toujours plus gigantesques.
Cependant, non seulement ce type de scaling reposant uniquement de la puissance de calcul toujours plus élevée s'accompagne de coûts énergétiques croissants, mais en poursuivant cette voie, et après avoir diversifié les ressources pour produire des modèles multimodaux, les gros LLM font en réalité désormais face à une augmentation constant de leur coût marginal (le coût du dernier token), autrement dit il leur faut de plus en plus de données et de paramètres pour arriver au même résultat, tandis que les données nécessaires pour entraîner des modèles ne sont pas disponibles à l’infini, même en étant peu regardant sur les droits d'auteur.
Si certains s'appuient sur ce constat pour prédire l’essoufflement de la dynamique de l’innovation de l’IA générative qui aurait atteint un plateau de stagnation sans réelle avancée théorique ou appliquée majeure ni progression significative de performances (et dont la bulle explosera bientôt faute d’innovation porteuse), il suffit de lire les commentaires accompagnant la sortie toute récente de GPT-4.5 pour au moins constater que la question du pre-training scaling comme levier d'innovation est posée.
Améliorer des performances des LLMs sans augmenter le nombre de paramètres
C'est l'objectif d’autres stratégies émergentes, issues de la recherche fondamentale ou appliquée, universitaire ou privée et souvent portées par la communauté open source, qui visent à décorréler performance et nombre de paramètres, et à explorer d’autres voies d’optimisation des modèles d’IA générative.
On peut évoquer brièvement :
le développement de systèmes multi-agents afin de lever les limites des LLMs concernant la résolution autonome de problèmes et l’intégration d’outils externes.
la recherche de nouveaux types d’architecture de réseaux de neurones (Mamba, architecture hybride entre Transformers et RNNs, architecture Titans de Google,...) visant à remplacer les Transformers limité par les nombreux calculs matriciels nécessaires
l'expérimentation de nouvelles techniques de tokenisation avec les nouveaux modèles de diffusion (dLLM) qui encodent des séquence entières en bits afin de s'abstraire du traitement itératif séquentiel propres aux modèles auto-régressifs (faites un tour sur https://chat.inceptionlabs.ai/, c'est très impressionnant !)
Une autre voie très explorée est le test-time compute, ou test-time scaling, qui consiste à améliorer les résultats des LLMs en allouant plus efficacement le temps de calcul de l’inférence sans modifier ni l’architecture du modèle ni la durée d’apprentissage ni le volume des données d’entraînement. Cette approche optimise donc la phase d’exécution du LLM plutôt que l’étape de son entraînement. Les recherches en ce sens portent par exemple sur différentes méthodes de sampling pour l’ajustement du processus génératif (génération et sélection du token suivant pour les modèles auto-régressifs) basé sur des techniques d’optimisation des paramètres du modèle telles que l’ajustement dynamique de la température ou le speculative decoding.
Enfin, comme évoqué dans l'introduction, de nouvelles techniques de post-training basées sur cette même logique conceptuelle d’intervention durant l’inférence montent en puissance et en popularité, en visant à apprendre au modèles à stopper la génération automatique du token suivant pour les "forçer à réfléchir” avant de répondre : pour ce faire, des chaînes de pensée possibles sont injectées dans l’espace du modèle, ces CoTs décrivent les étapes requises pour résoudre la tâche et guident le modèle pour l’évaluation et la sélection de la meilleure CoT, réduisant de fait le nombre de multiplications de matrices caractéristiques des Transformers. Ces procédés reviennent ainsi à pouvoir transformer un modèle de base en un modèle de raisonnement, par exemple en utilisant du Reinforcement Learning par GRPO qui consiste à orienter la sélection du token suivant sur la base d’un modèle de récompense, ou encore de la distillation qui consiste à transférer en amont les capacités de raisonnement d’un gros modèle vers un plus petit.
Le RL par GRPO consiste à apprendre à un modèle à partir d’un dataset dont les résultats sont évalués et étiquetées par un système de récompense (qui peut provenir d’une annotation humaine, de l’utilisation de LLM-as-a-judge, de fonctions de récompenses scriptées à façon…) afin d’orienter en sortie la réponse du modèle vers les trajectoires de réponses les plus élevées. Le GRPO, qui a été mis au point par DeepSeek, et s’avère être un game changer pour l’optimisation de LLM en des temps records , présente en effet le triple avantage de pouvoir commencer le fine-tuning directement avec l’apprentissage par renforcement sans passer par la phase de SFT, de pouvoir s’appuyer sur des jeux de données d’apprentissage relativement réduits mais de haute qualité, ainsi que de pouvoir être appliqué très efficacement sur des très petits modèles (même inférieurs à 1M) quand les techniques traditionnelles de fine-tuning (RLHF compris) ne sont efficaces que sur des modèles d’au moins 3B avec des datasets conséquents.
Pour résumer, une réelle dynamique se dessine autour :
de l’activation des capacités de raisonnement des modèles dans toutes les briques d’un dispositif d’IA, que cela porte sur le pre-training (comme DeepSeek), le post-training ou le mid-training (l'inférence)
et notamment des stratégies d'amélioration des performances se déportant de plus en plus du training vers l’inférence, de la structure des modèles vers leur exécution, en recherchant des gains de performances du côté de la phase générative elle-même, notamment par l’introduction de CoT
de la pertinence (économique, écologique...) d'utiliser préférentiellement des modèles légers et bien entraînés sur une tâche ou un domaine de connaissances bien précis grâce à des données de qualité, optimisés selon les stratégies évoquées plus haut, et hébergés en local pour une maîtrise complète des données
de l'importance stratégique, quels que soient les environnements professionnels, de maîtriser la création de SLM par fine-tuning ou réalignement ou autre, afin d'une part de coller au plus près de ses cas d'usage et ses besoins, et d'autre part de pouvoir exécuter ses propres modèles sur du CPU en local. Les avantages concurrentiels et les bénéfices réels de l'implémentation de l'IA se jouant certainement plus à ce niveau qu'en s'appuyant sur des modèles généralistes distants et payants.
par conséquent de la place centrale de l'open source (données, code, poids, licence) dans la diffusion des modèles et des comme levier et moteur de cette appropriation
Entraînement de Qwen2.5-0.5B-Instruct par distillation de Gemini-2.0-Flash-Thinking-Exp
Ayant pour objectif d’équilibrer taille, coûts computationnels et performances des modèles, la distillation de LLM est une technique qui cherche à faire reproduire par un petit modèle les performances d’un grand modèle de langage en organisant un transfert de connaissances depuis le modèle plus avancé vers le modèle plus léger. Le paradigme enseignant-étudiant se trouve donc au cœur du principe de distillation en tant que concept fondamental de pilotage du transfert des connaissances, garantissant que le modèle élève apprend efficacement les connaissances et capacités essentielles du modèle enseignant.
En même temps que ses deux modèles de raisonnement DeepSeek-R1 et DeepSeek-R1-Zero, DeepSeek a d'ailleurs délivré en open source six autres plus petits modèles issus de la distillation de deepSeek-R1 dans Llama3 ou Qwen2.5. Voir le Readme de DeepSeek-R1 pour les détails.
Diverses techniques de distillation existent, on utilisera ici la distillation de connaissances (Knowledge distillation), qui consiste à entraîner un modèle étudiant en lui fournissant les instructions, les réponses et les étapes de raisonnement générées par un modèle enseignant. L’apprentissage ajuste les poids du modèle étudiant afin que sa distribution de probabilités sur les tokens prédits imite celle du teacher, en minimisant une fonction de perte basée sur la divergence entre leurs logits.
Création du dataset de training
Comme d'habitude en IA, les données d'apprentissage jouent vraiment un rôle fondamental, et leur qualité influe très fortement sur celle des modèles (pour paraphraser Pierre-Carl Langlais, plus les données sont intelligentes, plus les modèles le sont également), d'autant plus ici quand les recherches en cours ont déjà démontré que le transfert de connaissances ne nécessite pas de s'appuyer sur des datasets très volumineux pour distiller au mieux les capacités des gros modèles. Il s'agit donc ici de générer des exemples de prompts et de réponses correctes de blocs EAD/XML, ainsi que de traces du raisonnement ayant conduit à ces réponses. Pour cela, et grâce aux gros modèles de raisonnement disponibles (DeepSeek-R1, gpt-o1 et gpt-o3-mini, gemini-2.0-flash-thinking-exp, ou tout dernièrement Claude 3.7 Sonnet...), il est relativement facile de créer à grande échelle des démonstrations de pensée “synthétiques” servant ensuite de datasets synthétiques d’apprentissage afin que le petit modèle-étudiant soit en capacité d'ensuite imiter les raisonnements du gros modèle de raisonnement choisi comme modèle-enseignant.
Exemple d'inférence en zero-shot sur gemini-2.0-flash-thinking-exp avec le client openai : récupération du résultat et des CoTs
from openai import OpenAI
client = OpenAI(
api_key=api_key,
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
response = client.chat.completions.create(
model="gemini-2.0-flash-thinking-exp",
n=1,
max_tokens=4096,
messages=[
{"role": "system", "content": "You are an expert in EAD/XML archival records description. Answer the user questions. Your answer must contain your reasoning steps."},
{
"role": "user",
"content": "Generate a complete c section with the following components: did, scopecontent, controlaccess, odd, arrangement, accessrestrict, userestrict"
}
]
)
print(response.choices[0].message.content.strip())
Et la réponse du modèle présentée en deux temps : la partie de l'output en xml
<c>
<did>
<unittitle>Correspondence with Literary Agents</unittitle>
<unitid>RG-1234, Series 2, Subseries 1, Box 5</unitid>
<unitdate type="inclusive" normal="1955/1970">1955-1970</unitdate>
<physdesc>
<extent>2 linear feet</extent>
<physfacet>Correspondence, drafts, contracts, and related business records</physfacet>
</physdesc>
<container type="box" label="Box">5-6</container>
</did>
<scopecontent>
<p>This section comprises correspondence with various literary agents representing the author during the period 1955-1970. The correspondence primarily concerns the submission, negotiation, and publication of the author's novels and short stories. Topics frequently discussed include manuscript reviews, editorial suggestions, contract terms, royalty statements, foreign rights sales, and publicity efforts. Significant agents represented in this section include [Agent Name 1], [Agent Name 2], and [Agent Name 3]. The records also include drafts of agent agreements, royalty statements, and internal office memoranda related to the author's account.</p>
</scopecontent>
<controlaccess>
<subject>Authors and publishers -- United States -- 20th century</subject>
<subject>Literary agents -- United States</subject>
<subject>Publishing -- Contracts</subject>
<subject>Copyright -- Literary property</subject>
<persname role="creator" source="lcnaf">Author, Jane, 1920-2000</persname>
<persname role="agent" source="lcnaf">Agent Name 1</persname>
<persname role="agent" source="lcnaf">Agent Name 2</persname>
<persname role="agent" source="lcnaf">Agent Name 3</persname>
<corpname source="lcnaf">Publisher Name</corpname>
</controlaccess>
<odd>
<head>Related Materials</head>
<p>Researchers should consult Series 3, "Publishing Contracts," for original signed copies of publishing agreements mentioned in this correspondence. Further correspondence related to specific book projects may be found within Series 4, "Book Manuscripts."</p>
</odd>
<arrangement>
<p>Within this section, materials are arranged alphabetically by literary agent name. Within each agent's file, documents are generally arranged chronologically, with the most recent items filed first.</p>
</arrangement>
<accessrestrict>
<head>Access Restrictions</head>
<p>Collection is open for research.</p>
</accessrestrict>
<userestrict>
<head>Use Restrictions</head>
<p>Single photocopies may be made for research purposes. Researchers are responsible for complying with copyright law. For extensive quotation or publication, permission must be obtained from the Literary Rights Holder.</p>
</userestrict>
</c>
accompagnée des connaissances et raisonnements mobilisés
Explanation of each element and its content:
<c>(Component): This is the container element representing a component within the archival collection. It's used to describe hierarchical levels of description within a finding aid.<did>(Descriptive Identification): Provides core identifying information about the component.<unittitle>: The title of the component. In this example, "Correspondence with Literary Agents" clearly describes the content.<unitid>: A unique identifier for the component within the larger finding aid. This example uses a structured identifier indicating series, subseries, and box number, which is common practice.RG-1234could be a repository identifier,Series 2,Subseries 1indicate its place in the hierarchy.<unitdate>: The date range of the materials within the component.type="inclusive"specifies that the dates represent the earliest and latest dates of the materials.normal="1955/1970"provides a normalized date range for indexing and searching.<physdesc>: Physical description of the component.<extent>: The size of the component, often in linear feet or number of items. "2 linear feet" is a common measurement for archival collections.<physfacet>: A more detailed description of the physical form of the materials. "Correspondence, drafts, contracts, and related business records" specifies the types of documents present.
<container>: Location information.type="box"specifies the container type andlabel="Box"provides a label for display.5-6indicates the component spans boxes 5 and 6.
<scopecontent>(Scope and Content): A narrative description of the intellectual content and significance of the component.<p>: Paragraph element containing the descriptive narrative. This example outlines the type of correspondence, topics discussed, significant agents involved, and related document types. A good scope and content note helps researchers understand what kind of information they can expect to find in this component.
<controlaccess>(Control Access): Provides controlled vocabulary terms to enhance discoverability and retrieval.<subject>: Subject headings that describe the content of the component. These are usually taken from controlled vocabularies like Library of Congress Subject Headings (LCSH). Examples here are relevant to the topic of literary agents and publishing.<persname>: Personal names associated with the component.role="creator"indicates the person who created the records (the author in this case).source="lcnaf"indicates the authority file used for the name (Library of Congress Name Authority File).role="agent"indicates the people who are the literary agents.
<corpname>: Corporate name associated with the component (e.g., a publisher).source="lcnaf"again indicates the authority file.
<odd>(Other Descriptive Data): Used for information that doesn't fit neatly into other elements.<head>: A heading for theoddelement, providing context. "Related Materials" is used here to point researchers to other relevant parts of the finding aid.<p>: Paragraph element containing the additional information. This example directs researchers to other series that contain related materials, improving the user's research experience.
<arrangement>(Arrangement): Describes how the materials within the component are organized.<p>: Paragraph element explaining the arrangement. This example describes a two-level arrangement: alphabetical by agent and then chronological within each agent's file. Understanding the arrangement helps researchers navigate the physical materials if they access them.
<accessrestrict>(Access Restrictions): Specifies any limitations on access to the materials.<head>: Heading for theaccessrestrictelement, "Access Restrictions".<p>: Paragraph indicating the access conditions. "Collection is open for research" is a common statement when no restrictions apply. If there were restrictions (e.g., closed until a certain date, or requiring permission), they would be detailed here.
<userestrict>(Use Restrictions): Specifies conditions related to the use of the materials after access is granted, typically concerning copyright or reproduction.<head>: Heading for theuserestrictelement, "Use Restrictions".<p>: Paragraph outlining the use restrictions. This example mentions typical restrictions related to photocopying for research and the need to obtain permission for publication, highlighting the researcher's responsibility regarding copyright.
This complete <c> section provides a thorough description of a component within an archival collection, incorporating all the requested elements and demonstrating good archival description practices. You can adapt this template by changing the content within each element to describe different types of components and materials.
Pour résumer simplement ici, la démarche utilisée a donc consisté à sélectionner un échantillon d'instruction représentatif et équilibré du dataset d'instructions déjà créé pour le fine-tuning de LLama3.2, puis de faire de l'inférence avec ces prompts sur gemini-2.0-flash-thinking-exp afin de collecter en même temps les réponses et toutes les étapes de raisonnement produites. Le code complet est accessible dans ce notebook sur Kaggle, et le dataset d'un peu moins de 4000 enregistrements accessible sur HuggingFace Geraldine/Ead-Instruct-4k-Distilled

Pourquoi avoir choisi le modèle expérimental gemini-2.0-flash-thinking-exp plutôt que DeepSeek ou gpt-01 ? La réponse est juste pragmatique, dans la mesure où :
- l'API de DeepSeek était en rade au moment où je constituais le dataset
- celle de GPT étant paramétrée pour ne pas renvoyer les étapes de raisonnement du modèle avec l'output ("I’m sorry, but I can’t share my private reasoning..."), il est possible de contourner cette restriction avec un prompt système explicite mais la qualité attendue des réponses devient trop instable pour baser avec confiance la constitution d'un dataset entier
- Claude 3.7 Sonnet n'était pas encore sorti
- des tests effectués sur d'autres modèles de raisonnement plus petits ne garantissent pas la conformité de l'EAD obtenu
Training
On peut ensuite "classiquement" utiliser les classes dédiées de la librarie python transformers pour lancer le training qui, bien que portant sur l'intégralité des poids du modèle, présente l'avantage de mobiliser peu de ressources et de temps vu la petite taille du modèle-étudiant et le faible volume de données. Le code utilisé est accessible sur ce notebook.
Résultats
Même si le training est optimisable (notamment sans doute sur la manière de formater le prompt) et si du coup les ouputs du modèle ne respectent pas strictement le format attendus, les résultats du fine-tuning sont particulièrement intéressants : le modèle génère désormais des sorties EAD/XML de haute qualité tout en fournissant un raisonnement détaillé et pertinent. Par rapport au modèle de base, qui a eu beaucoup de mal avec l’EAD/XML, cette version distillée démontre un très bon transfert de connaissances, prouvant que même un petit modèle peut effectivement apprendre des tâches spécialisées par distillation.
Voici par exemple le résultat d'une inférence avec le prompt "Generate a compliant
<eadheader>
<eadid countrycode="US" mainagencycode="[Your Institution Code]" identifier="[Unique Identifier]"> [Enter your EAD ID here] </eadid>
<filedesc>
<titlestmt>
<titleproper>Finding Aid for [Collection Title]</titleproper>
<subtitle>A Finding Aid to the Collection</subtitle>
<author>[Enter finding aid author if applicable] or institution name</author>
</titlestmt>
<publicationstmt>
<publisher>[Enter publisher name]</publisher>
<date encoding="iso8601" normal="[YYYY-MM-DD]">[Date of Publication YYYY-MM-DD]</date>
</publicationstmt>
</filedesc>
<profiledesc>
<creation>EAD encoded by [Your Name/Institution] on [Date of Encoding YYYY-MM-DD]</creation>
<langusage>
<language langcode="eng">English</language>
</langusage>
</profiledesc>
<revisiondesc>
<change>
<date encoding="iso8601" normal="[YYYY-MM-DD]">[Date of Revision YYYY-MM-DD]</date>
<item><emph render="bold">Revision 1:</emph> [Brief description of revision 1]</item>
</change>
</revisiondesc>
</eadheader>
et les explications en Markdown
Explanation of Each Element:
<eadheader>: This is the root element of the EAD header. It encapsulates all the descriptive information about the finding aid itself.<eadid>(Encoded Archival Description Identifier): This is the unique identifier for this specific EAD document within the finding aid system.countrycode: Specifies the country code according to ISO 3166-1 alpha-2. Replace[Your Institution Code]with the appropriate country code if needed.mainagencycode: Identifies the main agency responsible for the EAD record. Replace[Your Institution Code]with the actual code.identifier: A unique identifier for this specific EAD instance. This is crucial for internal referencing and linking within the system or externally. Make sure it's unique within the finding aid system and consistent across different versions.
<filedesc>(File Description): This section provides bibliographic information about the finding aid as a whole.<titlestmt>(Title Statement): Contains the title proper of the finding aid, a subtitle, and an author statement.Encodinganalog="MARC Title Block": Indicates that this part of the filedesc corresponds to a MARC title block field.[Enter publisher name], [Enter date of publication YYYY-MM-DD]: These are the elements that describe the finding aid's creation, publication, and date of availability.
<publicationstmt>(Publication Statement): Provides details about the publication of the finding aid.Encodinganalog="MARC Publication Statement": Indicates MARC publication field analog.[Enter publisher name], [Enter date of publication YYYY-MM-DD]: Similar to<publicationstmt>, but specifically for the publisher and date of publication.
<profiledesc>(Profile Description): This section contains information describing the creation and maintenance of the finding aid.<creation>(Creation): Indicates how the finding aid was created.[Enter date of encoding YYYY-MM-DD]: The date when the EAD document was encoded. This is important for tracking versioning history.[Enter date of revision YYYY-MM-DD]: If there have been revisions to the finding aid, this will be the date of the most recent revision.
<langusage>(Language Usage): Specifies the language(s) used in the finding aid.<language langcode="eng">English</language>: Indicates English as the primary language, using thelangcodeattribute to specify the ISO 639-2 language code (e.g., "eng" for English).
Important Considerations:
- Replace Placeholder Values: Remember to replace bracketed placeholders with your actual institution's information and the specific requirements of your finding aid.
- Validation: Always validate your EAD XML against the EAD schema to ensure it is well-formed and valid EAD before deploying it.
- Consistency: Maintain consistency in identifiers, subtitle, and language usage throughout your finding aids.
- Specific Requirements: Depending on your institution and the complexity of your finding aids, you may need to add more specific EAD elements within these areas (e.g.,
<origination>,<notestmt>, etc.).
Exemple avec le prompt "Give me an example of
<controlaccess> content"
Certainly! <controlaccess> is a crucial element within the <eadheader> section of an EAD document. It serves as a container to group together controlled access terms that describe the intellectual content, subject matter, and form of the archival materials being described.
Here's an example of <controlaccess> content, including both text and structured elements:
<controlaccess>
<persname encodinganalog="600">Hemingway, Ernest</persname>
<famname encodinganalog="610">The New York Times Company</famname>
<subject source="lcsh" authfilenumber="n79023458">American literature--History -- 20th century</subject>
<geogname encodinganalog="651">New York (State)</geogname>
</controlaccess>
Explanation of the components:
<controlaccess>: This is the container element for controlled access points in EAD. It groups together terms used to index and provide access to the described archival materials.<persname encodinganalog="600">Hemingway, Ernest</persname>:encodinganalog="600": This attribute specifies the MARC encoding analog. In this case, "600" typically indicates Subject Added Entry - Personal Name (common in library cataloging contexts).Hemingway, Ernest: This is the personal name term you provided. It represents a controlled access point related to the creator or subject of the archival materials, specifically referring to Ernest Hemingway.
<famname encodinganalog="610">The New York Times Company</famname>:encodinganalog="610": Specifies MARC encoding analog as "610" for Corporate Name.The New York Times Company: This is the corporate name term, indicating the entity associated with the described materials, which is The New York Times Company.
<subject source="lcsh" authfilenumber="n79023458">American literature--History -- 20th century</subject>:source="lcsh": Indicates the controlled vocabulary source is Library of Congress Subject Headings.authfilenumber="n79023458": Provides the authority file number for the subject term, likely from the Library of Congress Authorities database. "n79023458" should be replaced with the actual LCCN if available within your institution or controlled vocabulary system.American literature--History -- 20th century: This is the subject term itself, describing the topic covered in the archival materials. Using quotation marks around the phrase maintains the original formatting.
<geogname encodinganalog="651">New York (State)</geogname>:encodinganalog="651": Specifies MARC encoding analog as "651" for Geographic Name.New York (State): This is the geographic name term, indicating the location of the described materials, specifically New York State.
Key takeaways about this example:
- Controlled Access Points:
<controlaccess>uses various elements like<persname>,<famname>,<subject>,<geogname>, etc., to group together terms that describe the content and context of the archival materials. - Attributes: The
encodinganalogattribute is crucial for mapping EAD elements to corresponding fields in other descriptive standards like MARC, facilitating interoperability and cross-searching. - Terms and Authority Files: Including relevant terms and properly citing authority files ensures consistency and reduces errors when searching and referencing the archival materials.
- Quotation Marks: Using quotation marks (" ") around the subject term "American literature--History -- 20th century" is good practice to preserve the original formatting and semantic meaning of the phrase in the XML.
This example provides a solid foundation for incorporating your specific terms into a <controlaccess> section in EAD. You can expand upon this structure by adding more <persname>, <famname>, <subject>, <geogname>, and potentially other elements as needed to accurately represent the controlled access information for your archival records.
Exemple avec le prompt "Generate a complete EAD template for a correspondence archive between Henri Bosco and Jean Caminade.The collection contains two series of letters from two periods: 1965-1966 and 1968-1970."
<?xml version="1.0" encoding="UTF-8"?>
<ead xmlns="urn:isbn:1-931666-22-9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:isbn:1-931666-22-9 http://ead3.archivists.org/schema/ead.xsd">
<eadheader>
<eadid countrycode="FR" mainagencycode="[Repository Code, e.g., FR]"> [Unique EAD ID for this finding aid, e.g., MC001] </eadid>
<filedesc>
<titlestmt>
<titleproper>Finding Aid for the Correspondence Archive between Henri Bosco and Jean Caminade</titleproper>
<author>Archivist</author>
</titlestmt>
<publicationstmt>
<publisher>[Repository Name]</publisher>
<date calendar="gregorian" era="ce" normal="[YYYY]">[Date of publication, e.g., 2023]</date>
</publicationstmt>
</filedesc>
<profiledesc>
<creation>EAD encoded by Archivist.</creation>
<langusage>
<language langcode="eng">English</language>
</langusage>
</profiledesc>
</eadheader>
<archdesc level="collection">
<did>
<unittitle label="Collection Title">Correspondence Archive between Henri Bosco and Jean Caminade</unittitle>
<unitid label="Collection Number">[Repository Collection Identifier, e.g., MC002]</unitid>
<unitdate type="inclusive" datechar="creation" era="ce" calendar="gregorian" normal="[start date]/[end date]">[Dates of correspondence, e.g., 1965-1966 or 1968-1970]</unitdate>
<physdesc>
<extent>2 volumes</extent>
</physdesc>
<repository label="Repository">
<corpname>[Repository Name]</corpname>
</repository>
</did>
<scopecontent>
<p>This collection contains correspondence between [brief description of subject matter]. The materials span two periods (1965-1966 and 1968-1970) reflecting [mention key topics or themes].</p>
</scopecontent>
<arrangement>
<p>The collection is arranged into two series:</p>
<list type="ordered">
<item>Series I: Correspondence from [Year 1] to [Year 2, specify if multiple years exist]</item>
<item>Series II: Correspondence from [Year 3] to [Year 4, specify if multiple years exist]</item>
</list>
</arrangement>
<dsc>
<c01 level="series">
<did>
<unittitle>Series I: Correspondence from [Year 1] to [Year 2]</unittitle>
<unitdate type="inclusive" era="ce" calendar="gregorian" normal="[start year]/[end year]">[Start Date to End Date, e.g., 1965-1966]</unitdate>
<physdesc>
<extent>1 volume</extent>
</physdesc>
</did>
<scopecontent>
<p>This series contains correspondence primarily between [Bosco and Caminade] during [periods]. Topics may include [mention broad subjects covered in the correspondence].</p>
</scopecontent>
</c01>
<c01 level="series">
<did>
<unittitle>Series II: Correspondence from [Year 3] to [Year 4]</unittitle>
<unitdate type="inclusive" era="ce" calendar="gregorian" normal="[start year]/[end year]">[Start Date to End Date, e.g., 1968-1970]</unitdate>
<physdesc>
<extent>1 volume</extent>
</physdesc>
</did>
<scopecontent>
<p>This series also contains correspondence between [Bosco and Caminade] during [periods], covering similar topics as Series I but possibly in a different context or timeframe.</p>
</scopecontent>
</c01>
</dsc>
</archdesc>
</ead>
Implémentations
On peut utiliser le nouveau modèle de manière standard avec la librairie transformers depuis le dépôt sur HuggingFace (voir le README pour un exemple d'inférence), ou télécharger une version quantifiée depuis le repo des versions GGUF du modèle pour l'intégrer à une instance d'Ollama par exemple, ou de tout autre outil ou application basé sur des modèles quantifiés (GPT4All, Jan...), ou encore directement dans votre navigateur grâce à la librairie transformers.js et les formats ONNX du modèle distillé.
