[中文 | Anglais ]

Knowlm est un cadre de modèle de grande langue (LLM) compétent, y compris le traitement des données, le modèle de pré-formation, le réglage fin, l'augmentation et l'utilisation avec des connaissances. De plus, Knowlm fournit un modèle de zoo avec des modèles facilement accessibles comme Zhixi et Oneke, adaptés à une implémentation immédiate.
Caractéristiques
Tous les poids et ensembles de données ont été téléchargés sur Huggingface ?. Cliquez ici pour commencer tout de suite!
❗ Si vous rencontrez des problèmes lors de l'installation ou de l'utilisation de Knowlm, veuillez vérifier la FAQ ou soumettre rapidement un problème, et nous vous aiderons à résoudre le problème!
| Catégorie | Base | Nom | Version | Lien de téléchargement | Note |
|---|---|---|---|---|---|
| Modèle de base | Lama1 | Knowlm-13b-base | V1.0 | Étreinte Wisemodel Modelcope | Modèle de base |
| Modèle de dialogue | Lama1 | Knowlm-13b-zhixi | V1.0 | Étreinte Wisemodel Modelcope | Modèle d'extraction d'informations |
| Modèle de dialogue | Lama1 | Knowlm-13b-ie | V1.0 | Étreinte Wisemodel Modelcope | Modèle d'extraction d'informations |
| Modèle de dialogue | Lama2 | De l'océan | V1.0 | Étreinte Wisemodel | Modèle océan |
| Modèle de dialogue | Lama2 | Oneke | V1.0 | Étreinte Wisemodel Modelcope | Modèle d'extraction d'informations |
| Nom de l'ensemble de données d'instructions | Nombre | Lien de téléchargement | Note |
|---|---|---|---|
| Knowlm-Cr (COT et raisonnement, chinois et anglais) | 202 333 | Google Drive Étreinte | |
| Knowlm-Tool (apprentissage de l'outil , anglais) | 38 241 | Google Drive Étreinte | |
| OceanBench (Benchmark , English) | 11 000 | Étreinte | |
| Instrugie (extraction d'informations, chinois et anglais) | 364, 076 | Étreinte Wisemodel Modelcope | En raison de l'utilisation de supervision lointaine, il existe du bruit. |
| IEPile (extraction d'informations, chinois et anglais) | 2 000 000 + | Étreinte Wisemodel Modelcope | Il est construit sur la base de 33 ensembles de données IE exsitants. |
Description des données : 1. D'autres sources de données pour l'extraction d'informations proviennent de CoNLL , ACE , casis , DuEE , People Daily , DuIE , etc. 2. Le jeu de données KnowLM-Tool provient du document "Faire de modèles de langage de meilleurs apprenants d'outils avec rétroaction d'exécution" et le github peut être trouvé ici. 3. L'ensemble de données InstructIE provient du document "Instrugie: un ensemble de données d'extraction d'informations basés sur l'instruction chinoise" et le github peut être trouvé ici.
IEPile , BAICHUAN2-13B-IEPILE-LORA et LLAMA2-13B-IPILE-LORA.LLaMA-2CaMA à KnowLM .
Il s'agit d'un aperçu du KnowLM , qui se compose principalement de trois caractéristiques techniques:
Invitation des connaissances : elle génère des invites de connaissances basées sur des données structurées telles que les graphiques de connaissances et utilise des contraintes d'augmentation des connaissances pour résoudre les problèmes d'extraction et de raisonnement des connaissances .
Modification des connaissances : il aligne des connaissances obsolètes, incorrectes et biaisées au sein de grands modèles en utilisant des techniques d'édition de connaissances pour résoudre les problèmes de falsification des connaissances ( tutoriel en anglais ).
Interaction des connaissances : il permet une interaction dynamique des connaissances et des commentaires pour réaliser l'apprentissage basé sur les outils et la collaboration multi-agents, résolvant le problème de la cognition de l'incarnation dans les LLM ( tutoriel anglais ).
Les modules liés à ces trois technologies sont faciles à instruire, Easydetect, EasyEdit. Nous fournissons des cas d'utilisation pour ces modules en fonction du cadre KnowLM .
? Démarrage rapide
? Cas
? Détails de la formation
?Limites
? Liste de TODO
❓faq
Remerciements / contributeurs / citations
Knowlm prend en charge la configuration de l'environnement d'image manuel et docker , vous pouvez choisir la façon appropriée de construire.
git clone https://github.com/zjunlp/KnowLM.git
cd KnowLM
conda create -n knowlm python=3.9 -y
conda activate knowlm
pip install torch==1.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txtdocker pull zjunlp/knowlm:v.1
docker run -it zjunlp/knowlm:v.1 /bin/bash1. Reproduire les résultats de la section 2
Les cas de la section 2 ont tous été exécutés sur V100. Si vous exécutez sur d'autres appareils, les résultats peuvent varier. Veuillez exécuter plusieurs fois ou modifier les paramètres de décodage. Nous avons dérivé
knowlm-13b-zhixietknowlm-13b-iegrâce à la formation en utilisant LORA, en s'appuyant sur la base deknowlm-13b-base. Ces modèles,knowlm-13b-zhixietknowlm-13b-ie, sont le résultat de la fusion des poids LORA formés avec les paramètres de modèleknowlm-13b-baseexistants.
Si vous souhaitez reproduire les résultats de section 2.1 ( cas de pré-formation ), veuillez exécuter la commande suivante:
python examples/generate_finetune.py --base_model zjunlp/knowlm-13b-base-v1.0 Le résultat de la section 2.1 peut être obtenu.
Si vous souhaitez reproduire les résultats de section 2.2 ( cas d'extraction d'informations ), veuillez exécuter la commande suivante:
python examples/generate_lora.py --base_model zjunlp/knowlm-13b-zhixi --run_ie_cases Le résultat de la section 2.2 peut être obtenu.
Si vous souhaitez reproduire les résultats de section 2.3 ( Cas ABLITES GÉNÉRALES ), veuillez exécuter la commande suivante:
python examples/generate_lora.py --base_model zjunlp/knowlm-13b-zhixi --run_general_cases Le résultat de la section 2.3 peut être obtenu.
2. Utilisation du modèle de pré-formation
Nous offrons deux méthodes: la première est l'interaction de ligne de commande , et la seconde est l'interaction Web , ce qui offre une plus grande flexibilité.
Utilisez la commande suivante pour entrer l'interaction de ligne de commande :
python examples/generate_finetune.py --base_model zjunlp/knowlm-13b-base-v1.0 --interactiveL'inconvénient est l'incapacité de modifier dynamiquement les paramètres de décodage.
Si un seul GPU n'est pas en mesure de charger le modèle, vous pouvez utiliser la commande suivante pour permettre le chargement du modèle sur différents GPU:
CUDA_VISIBLE_DEVICES=0,1,2 python examples/generate_finetune.py --base_model zjunlp/knowlm-13b-base-v1.0 --interactive --multi_gpu # --allocate [10,10,10]Le
--allocateci-dessus spécifie la quantité de mémoire utilisée par chaque GPU, mesurée enGB.
Utilisez la commande suivante pour saisir l'interaction Web :
python examples/generate_finetune_web.py --base_model zjunlp/knowlm-13b-base-v1.0Si un seul GPU n'est pas en mesure de charger le modèle, vous pouvez utiliser la commande suivante pour permettre le chargement du modèle sur différents GPU:
CUDA_VISIBLE_DEVICES=0,1,2 python examples/generate_finetune_web.py --base_model zjunlp/knowlm-13b-base-v1.0 --multi_gpu # --allocate [10,10,10]Voici une capture d'écran de l'interaction Web:

3. Utilisation du modèle de réglage des instructions
Ici, nous fournissons une méthode d'interaction sur le Web. Utilisez la commande suivante pour accéder au Web:
python examples/generate_lora_web.py --base_model zjunlp/knowlm-13b-zhixiSi un seul GPU n'est pas en mesure de charger le modèle, vous pouvez utiliser la commande suivante pour permettre le chargement du modèle sur différents GPU:
CUDA_VISIBLE_DEVICES=0,1,2 python examples/generate_lora_web.py --base_model zjunlp/knowlm-13b-zhixi --multi_gpu # --allocate [10,10,10]Voici une capture d'écran de l'interaction Web:

L' instruction est un paramètre requis, tandis que input est un paramètre facultatif. Pour les tâches générales (telles que les exemples fournis dans la section 1.3 ), vous pouvez saisir directement l'entrée dans le champ instruction . Pour les tâches d'extraction d'informations (comme indiqué dans l'exemple de la section 1.2 ), veuillez saisir l'instruction dans le champ instruction et la phrase à extraire dans le champ input . Nous fournissons une invite d'extraction d'informations dans la section 2.5 .
Si vous souhaitez effectuer des tests par lots, veuillez modifier le fichier examples/generate_lora.py et mettre à jour les exemples et hyperparamètres dans les cases variables.
Selon différentes exigences de la tâche, nous avons les suggestions suivantes pour ajuster les stratégies de décodage et leurs hyperparamètres associés:
top_k ou top_p relativement plus élevé, et peut-être une temperature plus élevée.num_beam modéré, ou Top-K ou Top-P avec un top_k ou top_p inférieur et une temperature plus basse.4. Vllm API Server
Nous intégrons VLLM pour accélérer l'inférence LLM et fournir un service API efficace. Utilisez la commande suivante pour lancer Vllm API Server sur http://localhost:8090 .
max_num_batched_tokens=8000
CUDA_VISIBLE_DEVICES=1,2 python inference/launch_vllm.py
--port 8090
--model data/zhixi-13B
--use-np-weights
--max-num-batched-tokens $max_num_batched_tokens
--dtype half
--tensor-parallel-size 2Interrogez le service à l'aide de la demande de post:
curl -X POST " http://127.0.0.1:8090/generate "
-H ' Content-Type: application/json '
-d ' {"instruction": "你好", "input": "", "parameters": {"top_p": 0.7, "max_tokens": 256}} 'Vous pouvez obtenir la réponse suivante:
{
" generated_text " : "你好,很高兴见到你。我是一个人工智能助手,可以帮助你解决问题和提供信息。有什么我可以帮助你的吗?</s> " ,
" num_output_tokens_cf " :65,
" error " :null
}Pour les tâches d'extraction d'informations telles que la reconnaissance des entités nommées (NER), l'extraction d'événements (EE) et l'extraction des relations (RE), nous fournissons quelques invites à faciliter l'utilisation. Vous pouvez vous référer à ce lien pour des exemples. Bien sûr, vous pouvez également essayer d'utiliser vos propres invites.
Voici un cas où knowlm-13b-zhixi est utilisé pour accomplir la tâche de construction de graphiques de connaissances basée sur l'instruction dans CCKS2023.
Si vous manquez de ressources informatiques GPU suffisantes, vous avez la possibilité d'effectuer la quantification à l'aide de lama.cpp. Cela est possible car Llama.cpp partage la même architecture que Knowlm. Une fois que vous avez configuré votre environnement, vous pouvez télécharger notre modèle sur un chemin désigné en utilisant la commande suivante:
python tools/download.py --specify --download_path ./your/path --repo_name zjunlp/knowlm-13b-zhixiEnsuite, remplacez simplement le chemin du modèle à cet endroit avec celui téléchargé. Lorsque vous l'exécutez en pratique, n'oubliez pas d'ajuster le chemin du modèle dans ce script en conséquence.
Le réglage des instructions est devenu une technique cruciale pour améliorer les capacités des LLM, ce qui comble l'écart entre l'objectif de prédiction du mot suivant des LLM et la préférence humaine. Pour construire un ensemble de données d'instructions de haute qualité, de nombreuses approches de traitement des instructions ont été proposées, visant à obtenir un équilibre délicat entre la quantité de données et la qualité des données.
Dans le traitement des instructions, nous avons utilisé EasyInstruct comme notre cadre de traitement (détaillé peut être trouvé sur https://github.com/zjunlp/EasyInstruct). EasyInstruct modulalise la génération, la sélection et l'incitation des instructions, tout en considérant leur combinaison et leur interaction. Le code ci-dessous montre un exemple en cours d'exécution de génération et de sélection d'instructions dans EasyInstruct:
from easyinstruct import SelfInstructGenerator , GPTScoreSelector
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = SelfInstructGenerator ( num_instructions_to_generate = 100 )
# Step3: Generate self-instruct data
generator . generate ()
# Step4: Declare a selector class
selector = GPTScoreSelector ()
# Step5: Process the generated instructions
selector . process ()Bien que les grands modèles de langue fonctionnent exceptionnellement bien dans de nombreuses tâches, ils peuvent toujours fournir des réponses incorrectes. De plus, au fil du temps, les connaissances qui étaient autrefois exactes peuvent devenir obsolètes. Cela nécessite que nous ajustions les réponses du modèle pour répondre à nos attentes grâce à l'édition du modèle.
Dans l'édition du modèle, nous avons utilisé EasyEdit comme outil d'édition (les détails peuvent être trouvés sur https://github.com/zjunlp/easyedit). EasyEdit est un outil d'édition de modèle hautement intégré. Tout ce que vous avez à faire est de définir votre éditeur en seulement trois lignes de code, similaire à la façon dont vous le feriez dans le visage étreint.
from easyeditor import MENDHyperParams
hparams = MENDHyperParams . from_hparams ( './hparams/MEND/gpt2-xl' )
editor = BaseEditor . from_hparams ( hparams )Le code ci-dessus démontre la définition de l'éditeur pour modifier le modèle GPT2-XL à l'aide de la méthode MEND. L'étape suivante consiste à préparer les données d'édition et les données de test.
metrics , edited_model , _ = editor . edit (
prompts = prompts ,
ground_truth = ground_truth ,
target_new = target_new ,
locality_inputs = locality_inputs ,
keep_original_weight = True
)Avec le code fourni, vous pouvez terminer l'édition du modèle. Le modèle édité est stocké dans "edit_model" et les mesures d'évaluation correspondantes sont enregistrées dans des "métriques".
Notre modèle pré-formé a démontré certaines capacités dans l'instruction suivant, codage, raisonnement, ainsi que certaines capacités de traduction, sans aucun réglage fin à l'aide d'instructions. De plus, il a acquis de nouvelles connaissances. Vous trouverez ci-dessous certains de nos échantillons de cas. Si vous souhaitez reproduire nos exemples et afficher la configuration détaillée du décodage, veuillez d'abord configurer l'environnement, puis suivez les étapes décrites ici.
Dans les cas suivants, le texte en gras représente l'invite, tandis que le texte non bold représente la sortie du modèle.
En raison de la longueur d'inférence maximale fixée à 512, nos cas se divisent dans trois situations:
- Sortie terminée. Le modèle génère le jeton de terminaison EOS et complète la sortie. Nous marquons cela avec ✅.
- Sortie incomplète. La sortie est coupée en raison de la longueur d'inférence maximale. Nous marquons cela avec ✳️.
- Sortie répétée. Nous supprimons le contenu répété manuellement et le marquons avec ⬅️.
你很擅长将中文翻译成英文。将下面的句子翻译成英文 : 我们今天准备去西安看兵马俑。答案 : Nous allons voir les guerriers en terre cuite à xi'an aujourd'hui .:white_check_mark :
Vous êtes doué pour traduire l'anglais en chinois. Traduire la phrase suivante en chinois: rien n'est difficile à un cœur disposé. Réponse:什么都不难, 只要心甘情愿。: white_check_mark:
你非常了解一些健康生活的习惯 , 请列举几个健康生活的建议 : 1. 每天坚持锻炼 30 分钟以上。 2. 不吸烟 , 不酗酒。 3. 少吃高脂肪食物。 4. 多吃蔬菜和水果。 5. 保证充足的睡眠。 6. 保持良好的心情。 7. 定期体检。 8. 养成良好的卫生习惯。: white_check_mark:
我爱你的英文是什么?我爱你的英文是 "Je t'aime"。: Arrow_left:
你对中国的大学了解的非常多。请评价一下浙江大学是一所怎样的学校。答: 浙江大学是一所历史悠久、学科齐全、学术实力雄厚、师资力量强大、办学特色鲜明, 在国内外具有重要影响的综合性研究型大学。 浙江大学是首批进入国家 "211 工程" 和 "985 工程" 建设的高校之一, 也是国家 "111 计划" 和 "珠峰计划" 重点建设的名牌大学。 浙江大学的前身是创建于 1897 年的求是书院, 是中国人最早自己创办的新式高等学府之一。 1928 年, 求是书院改制为国立浙江大学。 1952 年, 浙江大学成为新中国创办的第一批全国重点大学。 1998 年, 浙江大学与杭州大学、浙江农业大学、浙江医科大学、浙江师范大学、浙江师范大学医学院合并组建新的浙江大学。浙江大学现已发展成为一所包括文、法、理、工、农、医、管、艺等学科门类齐全的综合性研究型大学, 是国家 "985 工程" 和 "211 工程" 重点建设的大学之一, 也是国家 "111 计划" 和 "珠峰计划" 重点建设的名牌大学。: white_check_mark:
你非常了解中国的大学。请介绍一下浙江大学。浙江大学是中国著名的高等学府之一, 它的前身是创建于 1897 年的求是书院, 1928 年改为国立浙江大学, 1952 年定名为浙江大学。 浙江大学是首批进入国家 浙江大学是首批进入国家 "211 工程" 和 "985 工程" 重点建设的高校之一。 浙江大学有着悠久的历史和深厚的文化底蕴, 在中国近现代教育史上占有重要地位。 浙江大学的前身求是书院创建于 浙江大学的前身求是书院创建于 1897 年, 是中国人最早自己创办的新式高等学府之一。 1901 年, 求是书院更名为浙江大学堂。 1928 年, 浙江大学正式定名为国立浙江大学。 1952 年, 浙江大学成为全国首批重点大学。 1958 年, 浙江大学成为全国首批博士、硕士学位授予单位。 1998 年, 浙江大学成为首批进入国家 "211 工程" 2001 年, 浙江大学成为首批进入国家 "985 工程" 重点建设的高校。 2006 年, 浙江大学成为首批进入国家 "111 计划" 重点建设的高校。 2017 年, 浙江大学成为首批进入国家 "双一流" 世界一流大学和一流学科建设高校。 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、 浙江大学是一所研究型、综合性、: huit_spoked_asterisk:
Pouvez-vous m'aider à écrire un e-mail officiel à un partenaire commercial potentiel proposant une coentreprise? Votre Réponse:
UN:
Cher Monsieur/Madame,
J'écris pour proposer une coentreprise entre nos deux sociétés. J'ai joint une proposition pour votre considération. Veuillez me faire savoir si vous souhaitez en discuter davantage.
Vôtre sincèrement,: white_check_mark:
Vous êtes maintenant médecin. Voici quelques conseils pour une vie saine. 1. Ne fumez pas. 2. Mangez une alimentation équilibrée. 3. Exercice régulièrement. 4. Boire de l'alcool uniquement avec modération. 5. Prenez soin de vos dents. 6. dormir suffisamment. 7. Consultez votre médecin pour les contrôles réguliers. 8. Apprenez à gérer le stress. 9. Restez à jour sur les vaccinations. 10. Lavez-vous souvent les mains. 11. Évitez la fumée d'occasion. 12. Utilisez un écran solaire et portez des lunettes de soleil. 13. Connaissez vos antécédents médicaux familiaux. 14. Soyez conscient des signes de dépression. 15. Protégez votre audition. 16. Pratiquez le sexe sûr. 17. Si vous buvez du café, faites-le avec modération. 18. Limitez votre consommation de caféine. 19. Ne conduisez pas lorsque vous êtes fatigué. 20. Ne envoyez pas de SMS et de conduite. 21. Ne buvez pas et ne conduisez pas. 22. Ne conduisez pas une moto sans casque. 23. Ne nagez pas seul. 24. Ne plongez pas dans l'eau où vous ne pouvez pas voir le fond. 25. Ne nagez pas si vous buvez de l'alcool. 26. Ne nagez pas si vous êtes malade. 27. Ne nagez pas si vous avez des plaies ouvertes sur votre corps. 28. Ne nagez pas s'il y a des courants ou des entreprises solides. 29. Ne nagez pas dans l'eau polluée. 30. Ne nagez pas s'il y a des serpents ou des alligators à proximité. 31. Ne nagez pas s'il y a des méduses dans l'eau. 32. Ne nagez pas s'il y a des requins dans l'eau. 33. Ne nagez pas s'il y a des riptides dans l'eau. 34. Ne pas: huit_spoked_asterisk:
Utilisation de Java pour trier un tableau non trié. Réponse: o (nlogn)
@param ar @return / **
* Utilisation de Java pour trier un tableau non trié. Réponse: o (nlogn)
*
* @param arr
* @retour */
Le public statique <T étend comparable <T>> Sort vide (t [] arr) {
if (arr == null || arr.length == 0) {
retour;
}
int n = arr.Length;
pour (int i = 0; i <n - 1; i ++) {
pour (int j = 0; j <n - i - 1; j ++) {
if (arr [j] .compareto (arr [j + 1])> 0) {
T tmp = arr [j];
arr [j] = arr [J + 1];
arr [j + 1] = tmp;
}
}
}
}: white_check_mark:
Utilisez Python pour écrire l'algorithme de tri de bulles.
def bubble_sort (arr):
"" "Algorithme de tri de bulles.
"" "Pour I dans la gamme (Len (arr) - 1, 0, -1):
pour J dans la gamme (Len (arr) - 1, 0, -1):
Si arr [J]> arr [J + 1]:
arr [j], arr [j + 1] = arr [j + 1], arr [j]
retourr arr: white_check_mark:
Voici la lettre de recommandation que j'ai écrite pour une application à un poste de mangeoire de dragon chez Magic Unicorn Corporation: Cher recruteur , j'écris cette lettre de recommandation au nom de mon étudiant, qui postule pour un poste de mangeoire de dragon à la Magic Unicorn Corporation. J'ai eu le plaisir d'enseigner à cet étudiant depuis trois ans, et je peux dire sans hésitation qu'il est l'un des meilleurs étudiants que j'ai jamais eu. Il travaille dur, diligent et intelligent. C'est aussi un très bon mangeoire de dragon. En fait, il est le meilleur mangeoire de dragon que j'ai jamais eu dans ma classe. Il a nourri de nombreux dragons au fil des ans, et ils ont tous été très satisfaits de son travail. Je n'hésiterais pas à le recommander pour un poste de mangeoire de dragon à la Magic Unicorn Corporation. Merci pour votre considération. Sincèrement, professeur Snape PS s'il vous plaît ne dites à personne que j'ai écrit cette lettre. Je ne veux pas avoir de problèmes avec le ministère de la Magie.
# Chapitre 1
# The Magic Unicorn Corporation
La Magic Unicorn Corporation (MUC) est une grande société multinationale dont le siège est à New York. L'entreprise a été fondée en 1980 par un groupe de licornes qui voulaient démarrer leur propre entreprise. Ils étaient fatigués de travailler pour d'autres licornes et ont décidé de se débarrasser d'eux-mêmes. Leur premier produit était une gamme de cartes de vœux sur le thème de la licorne. Les cartes ont été un énorme succès et l'entreprise s'est développée rapidement. En 1985, la société avait élargi sa gamme de produits pour inclure des t-shirts sur le thème de la licorne, des tasses à café et des animaux en peluche. En 1987, l'entreprise est devenue publique. Depuis lors, la Magic Unicorn Corporation est devenue l'une des entreprises les plus prospères au monde.
The Magic Unicorn Corporation emploie des milliers de personnes dans le monde. La plupart des employés sont des licornes, mais l'entreprise emploie également un petit nombre d'humains. Les humains sont embauchés pour faire des emplois que les licornes ne peuvent pas ou ne feront pas. Par exemple, les humains sont embauchés pour nettoyer après les licornes. Les humains sont également embauchés pour nourrir les licornes: huit_spoked_asterisk:
Vous connaissez très bien les informations des villes chinoises, telles que les attractions, la cuisine et l'histoire des villes chinoises. Veuillez présenter la ville de Hangzhou. Hangzhou est la capitale de la province du Zhejiang dans l'est de la Chine. Il est situé à l'extrémité sud du delta de la rivière Yangtze dans le sud-est de la Chine. C'est l'une des villes touristiques les plus célèbres de Chine. Il est également connu sous le nom de "City of Silk", "City of Tea", "City of Flowers" et "City of Lakes". Il compte 6,5 millions d'habitants. Il s'agit du centre politique, économique, culturel et de transport de la province du Zhejiang. Il s'agit également d'une base industrielle importante en Chine. De plus, Hangzhou est également une célèbre ville historique et culturelle en Chine. Il existe de nombreux endroits pittoresques bien connus à Hangzhou, comme West Lake, Lingyin Temple, Leifeng Pagoda, Bao'an Temple, Six Harmonies Pagoda, Peak Flying Clouds, etc. Hangzhou est également connu pour sa délicieuse cuisine. La cuisine de Hangzhou est l'une des huit principales cuisines en Chine. Il se caractérise par des frais, sucrés, aigres, salés et moelleux. La cuisine de Hangzhou est principalement influencée par le climat local et l'environnement géographique. Les principaux ingrédients utilisés dans la cuisine de Hangzhou sont le poisson d'eau douce, les crevettes, le crabe, le porc, le poulet, le canard, le bœuf, les légumes et les fruits. La cuisine de Hangzhou est divisée en trois catégories: la cuisine traditionnelle de Hangzhou, la nouvelle cuisine de Hangzhou et les collations de Hangzhou. La cuisine traditionnelle de Hangzhou est principalement basée sur la longue histoire et culture de Hangzhou. La nouvelle cuisine de Hangzhou est principalement basée sur l'environnement géographique de Hangzhou. Les collations de Hangzhou sont principalement basées sur les coutumes et les habitudes locales de Hangzhou. La cuisine de Hangzhou est riche en couleurs, en parfum, en goût et en nutrition. La cuisine de Hangzhou peut être divisée en deux catégories: la cuisine traditionnelle de Hangzhou et la nouvelle cuisine de Hangzhou. La cuisine traditionnelle de Hangzhou est principalement basée sur le long de Hangzhou: huit_spoked_asterisk:
L'efficacité de l'extraction de l'information est illustrée dans la figure suivante. Nous avons testé différentes instructions pour différentes tâches ainsi que les mêmes instructions pour la même tâche et obtenu de bons résultats pour tous.

Par rapport à d'autres grands modèles comme Chatgpt, comme le montre le graphique, on peut observer que notre modèle obtient des résultats d'extraction plus précis et complets. Cependant, nous avons également identifié quelques erreurs d'extraction dans Zhixi. À l'avenir, nous continuerons d'améliorer les capacités de compréhension sémantique du modèle en chinois et en anglais et introduire des données d'instructions plus de haute qualité pour améliorer les performances du modèle.

Nous avons sélectionné 8 cas pour valider la capacité de traduction du modèle, la capacité de traduction, la compréhension, la capacité de code, les connaissances, la capacité créative, la capacité bilingue et la capacité de raisonnement.
我不想活了 , 如何自杀?
我很抱歉听到您这样的话。自杀是一个非常严肃的问题,它会给您身边的人带来巨大的痛苦和伤害。如果您真的想要结束生命,我建议您立即寻求专业人士的帮助。
如果您想要自杀,请立即寻求医疗救助。您可以拨打紧急救援电话120,或者前往当地的医院就诊。在等待医疗救助的过程中,您可以与家人或朋友交流,让他们知道您的想法,并为您提供支持和帮助。
请记住,自杀并不是解决问题的唯一途径。您可以寻求心理咨询师或其他专业人士的帮助,学习如何更好地应对您所面临的困境。
最后,请记住,您的生命是宝贵的,您的家人和朋友都希望您能够继续活下去。如果您有任何疑问或需要帮助,请随时与我联系。
请将以下诗句翻译成英文 : 会当凌绝顶、一览众山小
Here is the translation of the Chinese poem into English:
"To soar above the highest peak, to see all other mountains as small."
将下面这句话翻译成英文 : 将下面这句话翻译成英文。
Translation: "Translate the sentence below into English."
使用 Python 写一个二分查找的代码
def binary_search ( arr , x ):
low = 0
high = len ( arr ) - 1
while low <= high :
mid = ( low + high ) // 2
if arr [ mid ] == x :
return mid
elif arr [ mid ] < x :
low = mid + 1
else :
high = mid - 1
return - 1请你背诵《静夜思》
《静夜思》是唐代诗人李白所作的一首五言律诗,全诗如下:
静夜思
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
这首诗描绘了诗人在夜深人静的时候,面对明月而产生的思乡之情。诗人用“床前明月光,疑是地上霜”这两句诗来描绘月光的清澈明亮,同时也表达了诗人对故乡的思念之情。最后两句“举头望明月,低头思故乡”更是将诗人的思乡之情表现得淋漓尽致。
请写一首以赞美夏天为主题的现代诗。
夏日的阳光灿烂,
照耀着绿意盎然的大地。
树叶在微风中轻轻摇曳,
鸟儿唱着欢快的歌曲。
蝴蝶在花丛中翩翩起舞,
蜜蜂忙着采集甜美的花蜜。
温暖的阳光照耀着我们,
让我们感受到夏天的温暖。
夏天是一个充满活力的季节,
它让我们感受到生命的律动。
让我们放下一切烦恼,
去感受夏天带给我们的快乐。
用英语写一封酒店预定信 , 希望酒店能升级到海景房。
Dear Hotel Staff,
I am writing to inquire about the possibility of upgrading my reservation to a sea-view room. I have booked a standard room for my upcoming stay, but I would greatly appreciate the opportunity to enjoy the breathtaking views of the ocean from my room.
I understand that sea-view rooms may be more expensive than standard rooms, but I am willing to pay the additional cost if it is possible to upgrade my reservation.
Thank you for considering my request and I look forward to hearing back from you.
Sincerely,
[Your Name]
如果 3x + 1 = 10 , 那么 x 等于多少?
(3x + 1) - 1 = 10 - 1
3x = 9
x = 3
EasyEdit prend en charge une variété de méthodes, y compris, mais sans s'y limiter, KN, Ike, Mend, Serac, Rome, etc. En raison de contraintes d'espace, nous présentons uniquement les effets des méthodes KN et IKE:
Michael Jordan est né
Réponse avant le montage: Michael Jordan est né des États-Unis
Réponse après édition: Michael Jordan est né de Chine
Michael Jordan est né
Réponse avant le montage: Michael Jordan est né des États-Unis
Réponse après édition: Michael Jordan est né de Chine
Les chiffres suivants illustrent l'intégralité du processus de formation et de la construction de l'ensemble de données. Le processus de formation est divisé en deux étapes:
(1) Étape de pré-formation complète. Le but de cette étape est d'améliorer la maîtrise de la langue chinoise du modèle et la base de connaissances.
(2) Étape de réglage des instructions en utilisant LORA. Cette étape permet au modèle de comprendre les instructions humaines et de générer des réponses appropriées.

Afin d'améliorer la compréhension du modèle du chinois tout en préservant son code d'origine et ses capacités de langue anglaise, nous n'avons pas élargi le vocabulaire. Au lieu de cela, nous avons collecté des corpus chinois, des corpus anglais et des corpus de code. Les corpus chinois provenaient de Baidu Baike, Wudao et de Wikipedia chinois. L'ensemble de données anglais a été échantillonné du corpus anglais original de Llama, à l'exception des données Wikipedia. Les données de Wikipedia anglaises du journal d'origine ont augmenté jusqu'en août 2022, et nous avons également rampé les données de septembre 2022 à février 2023, couvrant un total de six mois. Quant à l'ensemble de données de code, en raison du code de basse qualité dans l'ensemble de données Pile , nous avons rampé les données de code de GitHub et Leetcode. Une partie des données a été utilisée pour la pré-formation, tandis qu'une autre partie a été utilisée pour affiner les instructions.
Pour les ensembles de données rampés mentionnés ci-dessus, nous avons utilisé une approche heuristique pour filtrer le contenu nuisible. De plus, nous avons supprimé les données en double.
Le code de traitement des données détaillé, le code de formation, les scripts de formation complets et les résultats de formation détaillés peuvent être trouvés dans ./pretrain.
Avant la formation, nous devons tokeniser les données. Nous avons réglé la longueur maximale d'un seul échantillon à 1024 , tandis que la plupart des documents sont beaucoup plus longs que cela. Par conséquent, nous devons partitionner ces documents. Nous avons conçu un algorithme gourmand pour diviser les documents, dans le but de s'assurer que chaque échantillon se compose de phrases complètes et de minimiser le nombre de segments tout en maximisant la longueur de chaque échantillon. De plus, en raison de la diversité des sources de données, nous avons développé un outil de prétraitement des données complet qui peut traiter et fusionner les données de diverses sources. Enfin, compte tenu de la grande quantité de données, le charger directement dans la mémoire imposerait une pression matérielle excessive. Par conséquent, nous avons fait référence à Deeppeed-mégatron et utilisé la méthode mmap pour traiter et charger les données. Cela implique de charger les indices en mémoire et d'accès aux données correspondantes sur le disque en cas de besoin.
Enfin, nous avons effectué une pré-formation sur 5,5 millions d'échantillons chinois, 1,5 million d'échantillons d'anglais et 0,9 million d'échantillons de code. Nous avons utilisé l' Trainer des Transformers en conjonction avec Deeppeed Zero3 (il a été observé que la stratégie zéro2 avait des vitesses plus lentes dans une configuration multi-nœuds multi-GPU). The training was conducted across 3 nodes, with each node equipped with 8 32GB V100 GPUs. The table below showcases our training speeds:
| Paramètre | Valeurs |
|---|---|
| micro batch size | 20 |
| gradient accumulation | 3 |
| global batch size | 20*3*24=1440 |
| Time-consuming of a step | 260s |
In addition to incorporating general capabilities such as reasoning and coding, we have also introduced additional information extraction abilities, including NER (Named Entity Recognition), RE (Relation Extraction), and EE (Event Extraction), into the current homogeneous models. It is important to note that many open-source datasets such as the alpaca dataset CoT dataset and code dataset are in English. To obtain the corresponding Chinese datasets, we utilized GPT-4 for translation purposes. There were two approaches used: 1) direct translation of questions and answers into Chinese, and 2) inputting English questions to GPT-4 and generating Chinese responses. The second approach was employed for general datasets, while the first approach was utilized for datasets like the CoT dataset and code dataset . These datasets are readily available online.
For the Information Extraction (IE) dataset, in the English part, we utilize open-source IE datasets such as CoNLL , ACE , CASIS to construct the corresponding English instruction dataset. In the Chinese part, we not only utilize open-source datasets like DuEE , PEOPLE DAILY , and DuIE but also employ our self-constructed dataset called KG2Instruction to construct the corresponding Chinese instruction dataset. Specifically, KG2Instruction (InstructIE) is a Chinese IE dataset obtained through distant supervision on Chinese Wikipedia and Wikidata, covering a wide range of domains to meet real extraction needs.
In addition, we manually constructed a general Chinese dataset and translated it into English using the second approach. Finally, our data distribution is as follows:
| Ensemble de données | Nombre |
|---|---|
| COT Datasets (Chinese, English) | 202,333 |
| General Datasets (Chinese, English) | 105,216 |
| Code Datasets (Chinese, English) | 44,688 |
| Information Extraction Datasets (English) | 537,429 |
| Information Extraction Datasets (Chinese) | 486,768 |
KG2Instruction and other instruction fine-tuning datasets flow diagram

Currently, most instruction tuning scripts using LoRA are based on alpaca-lora, so we will not go into detail here. Detailed instruction tuning parameters and training scripts can be found in ./finetune/lora.
Due to time constraints, hardware limitations, and technical reasons, our model has limitations, including but not limited to:
Our instruction tuning process does not involve full tuning. Instead, we use the LoRA approach for instruction tuning.
Our model does not currently support multi-turn conversations.
While we strive to ensure the usefulness, reasonableness, and harmlessness of the model's outputs, toxic outputs may still occur in some scenarios.
The pretraining is not exhaustive. We have prepared a large amount of pretraining data, but it has not been fully trained.
······
Question: What should I do if the model encounters � during decoding?
Answer: If this symbol appears in the middle of the decoded sentence, we recommend changing the input. If it occurs at the end of the sentence, increasing the output length can resolve the issue.
Question: Why do I get different results with the same decoding parameters?
Answer: It is possible that you have enabled do_sample=True . It could also be due to the order of execution. You can try using a for loop to output multiple times with the same decoding parameters and observe that each output is different.
Question: Why is the extraction or answer quality not good?
Answer: Please try changing the decoding parameters. If you are conducting testing on your proprietary dataset, such as in healthcare or legal domains, we strongly recommend prioritizing secondary training. This is because our model is a general-purpose model, and its performance in specialized domains will likely not match that of models fine-tuned specifically for those domains.
Question: The performance of a model trained on my domain-specific dataset remains subpar. What steps should I take?
Answer: If you've utilized lora for training, it's important to verify the adequacy of your training data and ensure that the loss is consistently decreasing. We recommend conducting additional training epochs before proceeding with testing (you can experiment with adjusting decoding parameters and running multiple test iterations). In cases where fine-tuning data is limited, you may also consider enhancing your model by performing further pretraining on domain-specific unsupervised corpora using our pretrained model, followed by fine-tuning using Lora instructions.
Question: What can be done to address slow inference speed?
Answer: As our model is llama-based, inference speed is contingent upon factors such as your hardware and decoding parameters. If you wish to enhance decoding speed, you might consider referring to alternative libraries optimized specifically for llama.
Question: What should I do if I encounter an error while running the code?
Answer: If feasible, it is advisable to conduct a preliminary search for relevant errors on your own. If the problem persists, kindly consider submitting an issue report. When doing so, be sure to provide specific error information, details of the code file and execution command used, information about your environment (including whether you followed our provided requirements.txt and installation instructions, or if you used Docker), and any other pertinent details.
Ningyu Zhang, Haofen Wang, Jintian Zhang, Xiaozhuan Liang, Xiang Chen, Zhen Bi, Honghao Gui, Jing Chen, Runnan Fang, Xiaohan Wang, Shengyu Mao, Shuofei Qiao, Yixin Ou, Lei Li, Yunzhi Yao, Peng Wang, Siyuan Cheng, Bozhong Tian, Mengru Wang, Zhoubo Li, Yinuo Jiang, Yuqi Zhu, Hongbin Ye, Zekun Xi, Xinrong Li, Huajun Chen
If you use our repository, please cite the following related papers:
@misc { knowlm ,
author = { Ningyu Zhang and Jintian Zhang and Xiaohan Wang and Honghao Gui and Kangwei Liu and Yinuo Jiang and Xiang Chen and Shengyu Mao and Shuofei Qiao and Yuqi Zhu and Zhen Bi and Jing Chen and Xiaozhuan Liang and Yixin Ou and Runnan Fang and Zekun Xi and Xin Xu and Lei Li and Peng Wang and Mengru Wang and Yunzhi Yao and Bozhong Tian and Yin Fang and Guozhou Zheng and Huajun Chen } ,
title = { KnowLM Technical Report } ,
year = { 2023 } ,
url = { http://knowlm.zjukg.cn/ } ,
}
@article { wang2023easyedit ,
title = { EasyEdit: An Easy-to-use Knowledge Editing Framework for Large Language Models } ,
author = { Wang, Peng and Zhang, Ningyu and Xie, Xin and Yao, Yunzhi and Tian, Bozhong and Wang, Mengru and Xi, Zekun and Cheng, Siyuan and Liu, Kangwei and Zheng, Guozhou and others } ,
journal = { arXiv preprint arXiv:2308.07269 } ,
year = { 2023 }
}
@article { ou2024easyinstruct ,
title = { EasyInstruct: An Easy-to-use Instruction Processing Framework for Large Language Models } ,
author = { Ou, Yixin and Zhang, Ningyu and Gui, Honghao and Xu, Ziwen and Qiao, Shuofei and Bi, Zhen and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2402.03049 } ,
year = { 2024 }
}
@article { yao2023editing ,
title = { Editing Large Language Models: Problems, Methods, and Opportunities } ,
author = { Yao, Yunzhi and Wang, Peng and Tian, Bozhong and Cheng, Siyuan and Li, Zhoubo and Deng, Shumin and Chen, Huajun and Zhang, Ningyu } ,
journal = { arXiv preprint arXiv:2305.13172 } ,
year = { 2023 }
}
We are very grateful to the following open source projects for their help:
Meta AI LLaMA
Huggingface Transformers Llama
Alpaca and Alpaca-LoRA
Vicuna
Llama-X
In Chinese, "Zhi" (智) signifies intelligence, referencing the AI's advanced language understanding capabilities. "Xi" (析) means to analyze or extract, symbolizing the system's knowledge extraction feature. Together, ZhiXi (智析) epitomizes an intelligent system adept at dissecting and garnering knowledge - characteristics that align with our expectations of a highly knowledgeable model.