Maison >Périphériques technologiques >IA >Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « l'optimisation des algorithmes + l'innovation technique » de Huoshan Voice

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « l'optimisation des algorithmes + l'innovation technique » de Huoshan Voice

WBOY
WBOYavant
2023-04-08 12:44:181463parcourir

Depuis longtemps, Volcano Engine propose des solutions de sous-titres vidéo intelligentes basées sur la technologie de reconnaissance vocale pour les plateformes vidéo populaires. Pour faire simple, il s'agit d'une fonction qui utilise la technologie IA pour convertir automatiquement les voix et les paroles de la vidéo en texte pour aider à la création vidéo. Cependant, avec la croissance rapide du nombre d’utilisateurs de la plateforme et la nécessité de langues plus riches et plus diversifiées, la technologie d’apprentissage supervisé traditionnellement utilisée atteint de plus en plus son goulot d’étranglement, ce qui met l’équipe en difficulté.

Comme nous le savons tous, l'apprentissage supervisé traditionnel s'appuiera fortement sur des données supervisées annotées manuellement, notamment dans l'optimisation continue des grands langages​​et le démarrage à froid des petits langages. En prenant comme exemple les principales langues telles que le chinois, le mandarin et l'anglais, bien que la plate-forme vidéo fournisse suffisamment de données vocales pour les scénarios commerciaux, une fois que les données supervisées atteignent une certaine échelle, le retour sur investissement de l'annotation continue sera très faible, et le personnel technique devra inévitablement réfléchir à la manière d'utiliser efficacement des centaines de données supervisées, des dizaines de milliers d'heures de données non étiquetées, pour améliorer encore les performances de la reconnaissance vocale en grands langages.

Pour les langues ou dialectes relativement spécialisés, le coût de l'étiquetage des données est élevé en raison des ressources, de la main-d'œuvre et d'autres raisons. Lorsqu'il y a très peu de données étiquetées (de l'ordre de 10 heures), l'effet de la formation supervisée est très faible et peut même ne pas converger correctement et les données achetées ne correspondent souvent pas au scénario cible et ne peuvent pas répondre aux besoins du ; entreprise.

Par conséquent, l'équipe Volcano Engine Speech doit étudier de toute urgence comment utiliser pleinement une grande quantité de données non étiquetées au coût d'étiquetage le plus bas possible, améliorer l'effet de reconnaissance avec une petite quantité de données étiquetées et le mettre en œuvre dans entreprise réelle. Ainsi, la technologie de pré-formation non supervisée est devenue la clé pour promouvoir les capacités de la plate-forme vidéo ASR (Automatic Speech Recognition / Automatic Speech Recognition) auprès des petites langues.

Bien que le monde universitaire ait réalisé de nombreux progrès significatifs dans le domaine de la pré-formation à la parole non supervisée ces dernières années, notamment Wav2vec2.0[1], HuBERT[2], etc., il y a eu peu de progrès. mise en œuvre dans l’industrie Des cas peuvent être utilisés comme référence. Dans l'ensemble, l'équipe Volcano Voice estime que les trois raisons suivantes entravent la mise en œuvre d'une technologie de pré-formation non supervisée :

  1. Le grand nombre de paramètres du modèle et le coût élevé de l'inférence. Une grande quantité de données non étiquetées nécessite un pré-entraînement non supervisé avec un modèle plus grand pour obtenir une représentation vocale de haute qualité. Cependant, si un tel modèle est directement déployé en ligne, il entraînera des coûts d'inférence élevés.
  2. La pré-formation non supervisée se concentre uniquement sur l'apprentissage des représentations vocales. Elle doit être combinée avec un grand nombre de modèles de langage entraînés en texte brut pour un décodage conjoint afin d'obtenir l'effet idéal, et est incompatible avec le résultat final. -moteur d'inférence ASR de fin.
  3. La pré-formation non supervisée est coûteuse, de longue durée et instable. En prenant Wav2vec2.0 comme exemple, un modèle avec 300 millions de paramètres a été pré-entraîné pour 600 000 étapes à l'aide de 64 GPU V100, ce qui a pris jusqu'à un demi-mois. divergence.

Compte tenu des trois points faibles ci-dessus, des améliorations de l'algorithme et une optimisation de l'ingénierie ont été effectuées pour former un plan de mise en œuvre complet et facile à promouvoir. Cet article présentera la solution en détail à partir du processus de mise en œuvre, de l'optimisation des algorithmes et de l'optimisation de l'ingénierie.

Processus de mise en œuvre

La figure suivante montre le processus de mise en œuvre de la pré-formation non supervisée de l'ASR dans un langage à faibles ressources, qui peut être grossièrement divisé en trois étapes : la collecte de données, la formation du modèle de départ et la migration du modèle.

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « loptimisation des algorithmes + linnovation technique » de Huoshan Voice

Processus de mise en œuvre de l'ASR basé sur une pré-formation non supervisée

Plus précisément, la première phase de collecte de données peut collecter des paroles non étiquetées dans la langue cible par le biais du détournement de langue, de l'approvisionnement, etc. données textuelles uniquement.

La deuxième étape de la formation du modèle de départ est le processus classique "pré-formation non supervisée + mise au point supervisée". Dans cette étape, un modèle acoustique sera obtenu, qui est généralement affiné sur la base de la fonction de perte de la classification temporelle connexionniste (CTC[3]). Le modèle acoustique combiné au modèle linguistique formé sur du texte pur forme un système complet de reconnaissance vocale, qui peut obtenir de bons résultats de reconnaissance. La raison pour laquelle on l'appelle modèle de départ est que ce modèle n'est pas adapté pour être lancé directement dans l'entreprise. Le Volcano Engine préfère utiliser LAS (Listen, Attend and Spell[4]) ou RNN-T (Recurrent Neural. Network Transducer[ 5]) Ce type de modèle de bout en bout est déployé en ligne.

La raison principale est que LAS/RNN-T possède d'excellentes capacités de modélisation de bout en bout, en même temps, il a obtenu de meilleurs résultats que le modèle CTC traditionnel ces dernières années et a gagné de plus en plus de reconnaissance. l'industrie. Le moteur Volcano a effectué de nombreux travaux d'optimisation sur l'inférence et le déploiement de modèles de reconnaissance vocale de bout en bout, et a formé une solution relativement mature pour prendre en charge de nombreuses entreprises. Tout en maintenant l'effet sans perte, si le moteur d'inférence de bout en bout peut être utilisé, les coûts de fonctionnement et de maintenance du moteur peuvent être considérablement réduits.

Sur cette base, l'équipe a conçu la troisième phase, qui est la phase de migration du modèle. S'appuie principalement sur l'idée de distillation des connaissances, utilise un modèle de départ pour pseudo-étiqueter les données non étiquetées, puis fournit un modèle LAS avec un plus petit nombre de paramètres pour la formation, qui réalise simultanément la migration de la structure du modèle et la compression des calculs d'inférence. L'efficacité de l'ensemble du processus a été vérifiée sur l'ASR cantonais. Les résultats expérimentaux spécifiques sont présentés dans le tableau suivant :

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « loptimisation des algorithmes + linnovation technique » de Huoshan Voice

Tout d'abord, l'équipe a acheté 1kh de données de produit fini pour une comparaison expérimentale. et directement entraîné les performances du modèle LAS Pas bon, le taux d'erreur de caractère (Character Error Rate, CER) atteint 44,2 %. Après analyse, Volcano Engine estime que la raison principale est l'inadéquation entre les champs de données d'approvisionnement (conversation) et l'ensemble de tests commerciaux (vidéo). Des expériences préliminaires sur wav2vec2.0 ont également révélé un phénomène similaire.

Par rapport à l'utilisation des données d'approvisionnement pour la pré-formation, le Volcano Engine utilise des données cohérentes avec le champ cible pour la pré-formation. Le CER sur l'ensemble de tests commerciaux peut être réduit de 42,0 % à 29,4 % ; scénario Lorsque les données sont accumulées à 50 kh, les paramètres du modèle augmentent de 100 M à 300 M et le CER chute encore à 23,1 %.

Enfin, le moteur Volcano a vérifié l'effet de la migration du modèle. Il a combiné le modèle de langue cantonaise pour décoder 50kh de données non étiquetées afin d'obtenir des pseudo-étiquettes et d'entraîner le modèle LAS. On peut voir que le modèle LAS basé sur la formation de pseudo-étiquettes peut essentiellement maintenir l'effet de reconnaissance du modèle de départ CTC, et le nombre de paramètres du modèle est réduit d'un tiers et peut être directement déployé et lancé sur la base de un moteur d'inférence de bout en bout mature.

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « loptimisation des algorithmes + linnovation technique » de Huoshan Voice

Comparaison de la quantité de paramètres du modèle et du CER

En fin de compte, en partant du principe que la structure du modèle et la quantité de paramètres sont restées inchangées, l'équipe a obtenu 23,0 % en utilisant 50kh de données commerciales non étiquetées et 10h des données métiers labellisées. Le CER est réduit de 48% par rapport au modèle de référence. Après avoir résolu les problèmes de calcul et de compatibilité en ligne, nous nous sommes concentrés sur la technologie de base de pré-formation non supervisée dans l'ensemble du processus. Pour wav2vec2.0, le moteur Volcano a été optimisé sous deux dimensions : l'algorithme et l'ingénierie.

Optimisation d'algorithmes

wav2vec2.0, en tant que modèle de pré-formation auto-supervisé proposé par Meta AI en 2020, ouvre un nouveau chapitre dans l'apprentissage par représentation non supervisé de la parole. L'idée principale est d'utiliser le module de quantification pour discrétiser les caractéristiques d'entrée, et grâce à l'optimisation de l'apprentissage comparatif, le corps principal du modèle réalise des caractéristiques d'entrée partielle de masque aléatoire similaires à BERT.

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « loptimisation des algorithmes + linnovation technique » de Huoshan Voice

Diagramme de structure du modèle wav2vec2.0 (Source : wav2vec 2.0 Figure 1 [1])

J'ai également rencontré deux problèmes épineux lors de la formation du modèle wav2vec 2.0 sur les données d'entreprise : l'un est la faible efficacité de la formation, d'une taille de 300 M. plus de dix jours pour terminer la formation du modèle 64 cartes ; l'autre est que la formation est instable et facile à diverger. Un wav2vec efficace est proposé pour ce moteur Volcano afin d'atténuer les deux problèmes ci-dessus.

Pour résoudre le problème de la faible efficacité de la formation, l'équipe a accéléré la formation en réduisant la fréquence d'images du modèle, en remplaçant les fonctionnalités d'entrée de la forme d'onde par les banques de filtres, et la fréquence d'images est passée de 20 ms d'origine à 40 ms. Cela réduit non seulement considérablement la quantité de calcul de convolution d'extraction de fonctionnalités, mais réduit également considérablement la longueur du codage interne de Transformer, améliorant ainsi l'efficacité de la formation. Pour le problème de la formation instable, il est résolu en analysant la méthode d'apprentissage de la pré-formation non supervisée et du jugement global combiné à la situation réelle des données de l'entreprise. La perte d'apprentissage comparative peut être exprimée par la formule suivante :

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « loptimisation des algorithmes + linnovation technique » de Huoshan Voice

. Pour chaque image t , ct représente la sortie de l'encodeur de l'image, qt représente la sortie de quantification de l'image. De plus, plusieurs autres trames doivent être échantillonnées en tant qu'échantillons négatifs, de sorte que l'ensemble de la trame actuelle et de la trame d'échantillonnage négative est équivalent à un vocabulaire construit dynamiquement Qt.

L'objectif d'optimisation de l'apprentissage contrastif est de maximiser la similarité entre le codage de la trame actuelle et le résultat de quantification de la trame, tout en minimisant la similarité entre le codage de la trame actuelle et les résultats de quantification des autres trames. Il n'est pas difficile de constater que la similitude entre les échantillons négatifs et les échantillons positifs ainsi que le nombre d'échantillons négatifs déterminent directement l'effet de l'apprentissage contrastif. En pratique, la longueur moyenne des données commerciales est courte et est loin d'être suffisante pour fournir seulement 50 échantillons négatifs dans une seule phrase. Considérant que la similarité entre trames vocales adjacentes est très élevée, il est nécessaire d'assurer la continuité de la zone de masque, augmentant ainsi la difficulté de reconstruction de la représentation.

Afin de résoudre les deux problèmes ci-dessus, Volcano Engine a proposé deux améliorations :

  1. Flux de données de longueur égale : Dans le processus de pré-formation, l'ensemble de la formation L'ensemble est considéré comme constitué de chaque morceau audio composé du début et de la fin d'une phrase, à partir duquel chaque échantillon d'apprentissage est coupé à une longueur fixe. Ceci est fait pour garantir que le nombre d'échantillons négatifs est suffisant et que la longueur au sein du réseau de codage de contexte est cohérente à différentes fréquences d'images, garantissant ainsi la robustesse de la formation.
  2. Masque continu adaptatif : Afin d'atténuer l'impact du bruit des données sur l'entraînement, une longueur de masque plus petite est sélectionnée et chaque zone de masque est forcée à être continue, et la longueur audio correspondant au masque la zone est à des fréquences d'images assez différentes. Cela réduit non seulement la difficulté de l'apprentissage comparatif sous des données bruitées, mais s'adapte également à différentes fréquences d'images.

Après avoir comparé les effets de wav2vec2.0 (w2v) et Efficient wav2vec (w2v-e) sur les données commerciales, les résultats présentés dans le tableau ci-dessous sont obtenus (tous les modèles sont entraînés à l'aide de 64 GPU V100) :

Une exploration approfondie de la mise en œuvre de la technologie de pré-formation non supervisée et de « loptimisation des algorithmes + linnovation technique » de Huoshan Voice

Vous pouvez voir que le wav2vec efficace amélioré a une amélioration stable de 5 % des performances par rapport au wav2vec 2.0 d'origine, et l'efficacité de l'entraînement est presque doublée.

Optimisation de l'ingénierie

Bien que le wav2vec efficace proposé par l'équipe ait presque doublé l'efficacité de la formation au niveau de l'algorithme, en raison du volume de communication important du modèle 300M, la communication de formation fluctue toujours et l'efficacité de l'expansion multi-machines est faible. À cet égard, l'équipe Volcano Engine Voice a conclu : « Afin d'améliorer l'efficacité de la communication lors de la pré-formation des modèles dans des scénarios de gradient synchrone, nous avons complété la technologie d'optimisation de la communication du groupe Bucket sur le backend de communication basée sur le cadre de formation distribué BytePS. et l'efficacité du parallèle des données peut être améliorée de 10 % ; en même temps, afin de résoudre le problème d'attente provoqué par l'ordre différent de définition des paramètres du modèle et l'ordre de mise à jour du gradient, une stratégie de réorganisation adaptative des paramètres (réorganisation des paramètres) est également mise en œuvre. . "Sur la base de ces optimisations, il est en outre combiné avec une accumulation de gradient, etc. Technologie, l'efficacité d'extension sur une seule carte du modèle 300M est passée de 55,42 % à 81,83 %, et l'efficacité d'extension sur plusieurs machines est passée de 60,54 % à 91,13 %. Le modèle qui prenait initialement 6,5 jours à s'entraîner peut désormais être entraîné en seulement 4 jours, ce qui réduit le temps de 40 %.

De plus, afin de prendre en charge les scénarios de Big Data à grande échelle pour l'exploration future, l'équipe vocale de Volcano Engine a achevé la construction de capacités atomiques pour une série de modèles à très grande échelle. Tout d'abord, nous avons implémenté la technologie OSS locale, qui a résolu le problème de l'efficacité de l'expansion inter-machines tout en supprimant la majeure partie de la mémoire redondante occupée par l'optimiseur. Plus tard, nous avons pris en charge l'initialisation différée du bucket dans la communication à gradient synchrone, ce qui a doublé les paramètres. .Il consomme une grande quantité de mémoire vidéo, réduisant considérablement la mémoire vidéo maximale et s'adaptant à des scénarios de modèles très volumineux où les ressources de mémoire vidéo sont limitées. Enfin, sur la base du parallélisme des données, le parallélisme des modèles et le parallélisme des pipelines sont pris en charge, ainsi que la vérification et la prise en charge personnalisée ; sont complétés sur les modèles 1B et 10B. Cette série d'optimisations pose une base solide pour la formation de grands modèles et de big data.

Actuellement, en adoptant le processus de mise en œuvre de l'ASR à faibles ressources, deux langues à faibles ressources ont mis en œuvre avec succès des sous-titres vidéo et des services de sécurité de contenu. Outre la reconnaissance vocale, le modèle de pré-formation basé sur wav2vec2.0 a également réalisé des gains significatifs dans de nombreuses autres tâches en aval, notamment la détection d'événements audio, la reconnaissance de langue, la détection d'émotions, etc., et sera progressivement implémenté dans la sécurité du contenu vidéo. , recommandation et analyse à l'avenir, déchargement audio, analyse des sentiments du service client du commerce électronique et autres activités connexes. La mise en œuvre d'une technologie de pré-formation non supervisée réduira considérablement le coût d'étiquetage de divers types de données audio, raccourcira le cycle d'étiquetage et permettra de répondre rapidement aux besoins de l'entreprise.

Résumé et perspectives

En pratique, Volcano Engine a exploré une solution d'implémentation ASR en langage à faibles ressources basée sur wav2vec2.0, qui résout le problème de la surcharge d'inférence élevée et permet une intégration transparente avec le système de bout en bout. -connexion du moteur. Pour résoudre les problèmes fondamentaux de faible efficacité de formation et d’instabilité de wav2vec2.0, Efficient wav2vec a été proposé. Par rapport à wav2vec2.0, l'effet sur les tâches en aval est amélioré de 5 % et le temps de pré-formation est réduit de moitié. Combiné à l'optimisation de l'ingénierie, le temps de pré-formation final est réduit de 70 % par rapport à la version originale. À l'avenir, Volcano Engine continuera d'explorer dans les trois directions suivantes :

  1. Mise à niveau de l'algorithme non supervisé : Après wav2vec 2.0, des travaux de recherche sur la pré-formation vocale non supervisée ont vu le jour. L'équipe continuera de suivre les dernières recherches et de les internaliser dans des scénarios commerciaux. À ce stade, nous essayons principalement des modèles non supervisés tels que HuBERT[2], MAE[6] et data2vec[7], et explorons leurs performances respectives sous différentes tâches en aval. À l'avenir, les performances des modèles non supervisés seront améliorées sous deux aspects : la conception de solutions non supervisées efficaces et adaptatives selon différents scénarios commerciaux ; la conception de modèles généraux non supervisés pour améliorer les performances de diverses tâches en aval.
  2. Multi-langue et multi-modal : Il existe actuellement de nombreux travaux de recherche qui combinent non supervisé et multi-langue, comme XLSR[8]. Sur cette base, Volcano Engine a proposé S3Net[9], qui modélise différentes langues en divisant plusieurs sous-réseaux clairsemés dans le modèle de pré-formation, atténuant efficacement le problème d'interférence mutuelle entre différentes langues (Language Interference), il a un effet d'amélioration significatif des performances sur les langages à grand corpus. Les travaux de recherche existants se concentrent principalement sur le côté encodeur audio, et les modèles de bout en bout traditionnels actuels adoptent tous la structure encodeur-décodeur, c'est-à-dire la modélisation multimodale de texte audio. L'équipe détermine que le pré-entraînement audio pur ne peut plus répondre aux besoins du modèle de bout en bout. À l'avenir, elle explorera le pré-entraînement multimodal du texte audio, y compris la modélisation conjointe de masses non alignées. texte audio et modèles de bout en bout et pré-formation multimodale pure non supervisée.
  3. Big Data Big Model : Les performances du modèle existant sont proches de la saturation à l'échelle de 100 000 heures. Sur la base du modèle entraîné avec 100 000 heures de données annotées chinoises, l'équipe en a utilisé 1 million. heures de gratuité Les données annotées sont entraînées par NST[10], et une diminution relative de 7 % du CER est obtenue sur l'ensemble de tests général. Dans le même temps, la capacité de généralisation du modèle est considérablement améliorée et le CER moyen est relativement. réduit de 15 % sur les 20 ensembles de tests de domaines. Pour absorber pleinement les données massives de millions d'heures, un modèle plus grand est nécessaire. À l'heure actuelle, Volcano Engine a fait des premiers progrès sur un modèle avec des paramètres 1B. La limite de performances des grands modèles est élevée et le problème qui en découle est qu’elle est difficile à mettre en œuvre. Afin d'implémenter de grands modèles dans les affaires réelles, diverses méthodes de compression de modèles seront essayées à l'avenir, telles que la décomposition matricielle, le découpage des poids, la distillation des connaissances, etc., pour obtenir autant que possible des effets de compression sans perte.

Volcano Voice, la technologie vocale de pointe qui sert depuis longtemps les différents secteurs d'activité de ByteDance, est ouverte via le moteur Volcano, offrant des capacités de technologie vocale IA de pointe et d'excellentes solutions de produits vocaux complets, y compris la compréhension audio, synthèse audio, personnes numériques virtuelles, interaction conversationnelle, récupération de musique, matériel intelligent, etc. Actuellement, la reconnaissance vocale et la synthèse vocale de Volcano Engine couvrent plusieurs langues et dialectes. De nombreux articles techniques ont été sélectionnés dans diverses conférences de premier plan sur l'IA, offrant des capacités vocales de pointe pour Douyin, Jianying, Feishu, Tomato Novels, Pico et d'autres entreprises. convient à divers scénarios tels que les courtes vidéos, les diffusions en direct, la création vidéo, le bureau et les appareils portables.

Références

[1] Baevski, A., Zhou, Y., Mohamed, A. et Auli, M., 2020. wav2vec 2.0 : Un cadre pour l'apprentissage auto-supervisé des représentations vocales. dans Neural Information Processing Systems, 33, pp.12449-12460.

[2] Hsu, W.N., Bolte, B., Tsai, Y.H.H., Lakhotia, K., Salakhutdinov, R. et Mohamed, A. , 2021. Hubert : Apprentissage auto-supervisé de la représentation vocale par prédiction masquée d'unités cachées Transactions IEEE/ACM sur le traitement audio, vocal et linguistique, 29, pp.3451-3460.

[3] Graves , A., Fernández, S., Gomez, F. et Schmidhuber, J., 2006, juin. Classification temporelle connexionniste : étiquetage des données de séquence non segmentées avec des réseaux neuronaux récurrents dans les actes de la 23e conférence internationale sur l'apprentissage automatique (pp. 369 -). 376) reconnaissance. En 2016, conférence internationale de l'IEEE sur l'acoustique, la parole et le traitement du signal (ICASSP) (pp. 4960-4964).

[5] Graves, A., 2012. Transduction de séquences avec réseaux de neurones récurrents. Préimpression arXiv arXiv:1211.3711.

[6] He, K., Chen, X., Xie, S., Li, Y., Dollár, P. et Girshick, R., 2022. Les auto-encodeurs masqués sont apprenants en vision évolutive. Dans Actes de la conférence IEEE/CVF sur la vision par ordinateur et la reconnaissance de formes (pp. 16000-16009).

[7] Baevski, A., Hsu, W.N., Xu, Q., Babu, A., Gu, J. et Auli, M., 2022. Data2vec : Un cadre général pour l'apprentissage auto-supervisé de la parole, de la vision et du langage. Préimpression arXiv arXiv:2202.03555.

[8] Conneau, A., Baevski, A., Collobert, R., Mohamed, A. et Auli, M., 2020. Apprentissage non supervisé de la représentation interlingue pour la parole reconnaissance. Préimpression arXiv arXiv:2006.13979.

[9] Lu, Y., Huang, M., Qu, X., Wei, P. et Ma, Z., 2022, mai. Apprentissage de la représentation vocale multilingue adaptatif au langage avec des sous-réseaux de partage clairsemés. Dans ICASSP 2022-2022 Conférence internationale de l'IEEE sur l'acoustique, la parole et le traitement du signal (ICASSP) (pp. 6882-6886). IEEE.

[10] Park, D.S., Zhang, Y., Jia, Y., Han, W., Chiu, C.C., Li, B., Wu, Y. et Le, Q.V., 2020. Formation améliorée des étudiants bruyants pour la reconnaissance vocale automatique. préimpression arXiv arXiv:2005.09629.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer