index.html 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. <!doctype html>
  2. <html lang="ar" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="Targeting SOTA TTS solutions.">
  7. <link rel="canonical" href="https://speech.fish.audio/ar/finetune/">
  8. <link rel="prev" href="../install/">
  9. <link rel="next" href="../inference/">
  10. <link rel="alternate" href="../../finetune/" hreflang="en">
  11. <link rel="alternate" href="../../zh/finetune/" hreflang="zh">
  12. <link rel="alternate" href="../../ja/finetune/" hreflang="ja">
  13. <link rel="alternate" href="../../pt/finetune/" hreflang="pt">
  14. <link rel="alternate" href="../../ko/finetune/" hreflang="ko">
  15. <link rel="alternate" href="./" hreflang="ar">
  16. <link rel="icon" href="../../assets/logo.svg">
  17. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
  18. <title>الضبط الدقيق - Fish Audio</title>
  19. <link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
  20. <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
  21. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  22. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
  23. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  24. <link rel="stylesheet" href="../../stylesheets/extra.css">
  25. <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
  26. </head>
  27. <body dir="rtl" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  28. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  29. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  30. <label class="md-overlay" for="__drawer"></label>
  31. <div data-md-component="skip">
  32. <a href="#fine-tuning" class="md-skip">
  33. انتقل إلى المحتوى
  34. </a>
  35. </div>
  36. <div data-md-component="announce">
  37. </div>
  38. <header class="md-header md-header--shadow" data-md-component="header">
  39. <nav class="md-header__inner md-grid" aria-label="عنوان العارضة">
  40. <a href="https://speech.fish.audio" title="Fish Audio" class="md-header__button md-logo" aria-label="Fish Audio" data-md-component="logo">
  41. <img src="../../assets/logo.svg" alt="logo">
  42. </a>
  43. <label class="md-header__button md-icon" for="__drawer">
  44. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
  45. </label>
  46. <div class="md-header__title" data-md-component="header-title">
  47. <div class="md-header__ellipsis">
  48. <div class="md-header__topic">
  49. <span class="md-ellipsis">
  50. Fish Audio
  51. </span>
  52. </div>
  53. <div class="md-header__topic" data-md-component="header-topic">
  54. <span class="md-ellipsis">
  55. الضبط الدقيق
  56. </span>
  57. </div>
  58. </div>
  59. </div>
  60. <form class="md-header__option" data-md-component="palette">
  61. <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
  62. <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
  63. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
  64. </label>
  65. <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
  66. <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
  67. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
  68. </label>
  69. <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
  70. <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
  71. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
  72. </label>
  73. </form>
  74. <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
  75. <div class="md-header__option">
  76. <div class="md-select">
  77. <button class="md-header__button md-icon" aria-label="إختر اللغة">
  78. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"/></svg>
  79. </button>
  80. <div class="md-select__inner">
  81. <ul class="md-select__list">
  82. <li class="md-select__item">
  83. <a href="../../finetune/" hreflang="en" class="md-select__link">
  84. English
  85. </a>
  86. </li>
  87. <li class="md-select__item">
  88. <a href="../../zh/finetune/" hreflang="zh" class="md-select__link">
  89. 简体中文
  90. </a>
  91. </li>
  92. <li class="md-select__item">
  93. <a href="../../ja/finetune/" hreflang="ja" class="md-select__link">
  94. 日本語
  95. </a>
  96. </li>
  97. <li class="md-select__item">
  98. <a href="../../pt/finetune/" hreflang="pt" class="md-select__link">
  99. Português (Brasil)
  100. </a>
  101. </li>
  102. <li class="md-select__item">
  103. <a href="../../ko/finetune/" hreflang="ko" class="md-select__link">
  104. 한국어
  105. </a>
  106. </li>
  107. <li class="md-select__item">
  108. <a href="./" hreflang="ar" class="md-select__link">
  109. العربية
  110. </a>
  111. </li>
  112. </ul>
  113. </div>
  114. </div>
  115. </div>
  116. <label class="md-header__button md-icon" for="__search">
  117. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
  118. </label>
  119. <div class="md-search" data-md-component="search" role="dialog">
  120. <label class="md-search__overlay" for="__search"></label>
  121. <div class="md-search__inner" role="search">
  122. <form class="md-search__form" name="search">
  123. <input type="text" class="md-search__input" name="query" aria-label="بحث" placeholder="بحث" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
  124. <label class="md-search__icon md-icon" for="__search">
  125. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
  126. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
  127. </label>
  128. <nav class="md-search__options" aria-label="إبحث">
  129. <a href="javascript:void(0)" class="md-search__icon md-icon" title="شارك" aria-label="شارك" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
  130. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
  131. </a>
  132. <button type="reset" class="md-search__icon md-icon" title="مسح كلي" aria-label="مسح كلي" tabindex="-1">
  133. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
  134. </button>
  135. </nav>
  136. <div class="md-search__suggest" data-md-component="search-suggest"></div>
  137. </form>
  138. <div class="md-search__output">
  139. <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
  140. <div class="md-search-result" data-md-component="search-result">
  141. <div class="md-search-result__meta">
  142. بدء البحث
  143. </div>
  144. <ol class="md-search-result__list" role="presentation"></ol>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div class="md-header__source">
  151. <a href="https://github.com/fishaudio/fish-speech" title="اذهب إلى المصدر" class="md-source" data-md-component="source">
  152. <div class="md-source__icon md-icon">
  153. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
  154. </div>
  155. <div class="md-source__repository">
  156. fishaudio/fish-speech
  157. </div>
  158. </a>
  159. </div>
  160. </nav>
  161. </header>
  162. <div class="md-container" data-md-component="container">
  163. <main class="md-main" data-md-component="main">
  164. <div class="md-main__inner md-grid">
  165. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  166. <div class="md-sidebar__scrollwrap">
  167. <div class="md-sidebar__inner">
  168. <nav class="md-nav md-nav--primary" aria-label="تصفح" data-md-level="0">
  169. <label class="md-nav__title" for="__drawer">
  170. <a href="https://speech.fish.audio" title="Fish Audio" class="md-nav__button md-logo" aria-label="Fish Audio" data-md-component="logo">
  171. <img src="../../assets/logo.svg" alt="logo">
  172. </a>
  173. Fish Audio
  174. </label>
  175. <div class="md-nav__source">
  176. <a href="https://github.com/fishaudio/fish-speech" title="اذهب إلى المصدر" class="md-source" data-md-component="source">
  177. <div class="md-source__icon md-icon">
  178. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
  179. </div>
  180. <div class="md-source__repository">
  181. fishaudio/fish-speech
  182. </div>
  183. </a>
  184. </div>
  185. <ul class="md-nav__list" data-md-scrollfix>
  186. <li class="md-nav__item">
  187. <a href="../" class="md-nav__link">
  188. <span class="md-ellipsis">
  189. مقدمة
  190. </span>
  191. </a>
  192. </li>
  193. <li class="md-nav__item">
  194. <a href="../install/" class="md-nav__link">
  195. <span class="md-ellipsis">
  196. التثبيت
  197. </span>
  198. </a>
  199. </li>
  200. <li class="md-nav__item md-nav__item--active">
  201. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  202. <label class="md-nav__link md-nav__link--active" for="__toc">
  203. <span class="md-ellipsis">
  204. الضبط الدقيق
  205. </span>
  206. <span class="md-nav__icon md-icon"></span>
  207. </label>
  208. <a href="./" class="md-nav__link md-nav__link--active">
  209. <span class="md-ellipsis">
  210. الضبط الدقيق
  211. </span>
  212. </a>
  213. <nav class="md-nav md-nav--secondary" aria-label="جدول المحتويات">
  214. <label class="md-nav__title" for="__toc">
  215. <span class="md-nav__icon md-icon"></span>
  216. جدول المحتويات
  217. </label>
  218. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  219. <li class="md-nav__item">
  220. <a href="#llama" class="md-nav__link">
  221. <span class="md-ellipsis">
  222. الضبط الدقيق لـ LLAMA
  223. </span>
  224. </a>
  225. <nav class="md-nav" aria-label="الضبط الدقيق لـ LLAMA">
  226. <ul class="md-nav__list">
  227. <li class="md-nav__item">
  228. <a href="#1" class="md-nav__link">
  229. <span class="md-ellipsis">
  230. 1. إعداد مجموعة البيانات
  231. </span>
  232. </a>
  233. </li>
  234. <li class="md-nav__item">
  235. <a href="#2-semantic-tokens" class="md-nav__link">
  236. <span class="md-ellipsis">
  237. 2. الاستخراج الدفعي للرموز الدلالية (semantic tokens)
  238. </span>
  239. </a>
  240. </li>
  241. <li class="md-nav__item">
  242. <a href="#3-protobuf" class="md-nav__link">
  243. <span class="md-ellipsis">
  244. 3. حزم مجموعة البيانات في protobuf
  245. </span>
  246. </a>
  247. </li>
  248. <li class="md-nav__item">
  249. <a href="#4-lora" class="md-nav__link">
  250. <span class="md-ellipsis">
  251. 4. أخيرًا، الضبط الدقيق باستخدام LoRA
  252. </span>
  253. </a>
  254. </li>
  255. </ul>
  256. </nav>
  257. </li>
  258. </ul>
  259. </nav>
  260. </li>
  261. <li class="md-nav__item">
  262. <a href="../inference/" class="md-nav__link">
  263. <span class="md-ellipsis">
  264. الاستنتاج
  265. </span>
  266. </a>
  267. </li>
  268. <li class="md-nav__item">
  269. <a href="../samples.md" class="md-nav__link">
  270. <span class="md-ellipsis">
  271. العينات
  272. </span>
  273. </a>
  274. </li>
  275. </ul>
  276. </nav>
  277. </div>
  278. </div>
  279. </div>
  280. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  281. <div class="md-sidebar__scrollwrap">
  282. <div class="md-sidebar__inner">
  283. <nav class="md-nav md-nav--secondary" aria-label="جدول المحتويات">
  284. <label class="md-nav__title" for="__toc">
  285. <span class="md-nav__icon md-icon"></span>
  286. جدول المحتويات
  287. </label>
  288. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  289. <li class="md-nav__item">
  290. <a href="#llama" class="md-nav__link">
  291. <span class="md-ellipsis">
  292. الضبط الدقيق لـ LLAMA
  293. </span>
  294. </a>
  295. <nav class="md-nav" aria-label="الضبط الدقيق لـ LLAMA">
  296. <ul class="md-nav__list">
  297. <li class="md-nav__item">
  298. <a href="#1" class="md-nav__link">
  299. <span class="md-ellipsis">
  300. 1. إعداد مجموعة البيانات
  301. </span>
  302. </a>
  303. </li>
  304. <li class="md-nav__item">
  305. <a href="#2-semantic-tokens" class="md-nav__link">
  306. <span class="md-ellipsis">
  307. 2. الاستخراج الدفعي للرموز الدلالية (semantic tokens)
  308. </span>
  309. </a>
  310. </li>
  311. <li class="md-nav__item">
  312. <a href="#3-protobuf" class="md-nav__link">
  313. <span class="md-ellipsis">
  314. 3. حزم مجموعة البيانات في protobuf
  315. </span>
  316. </a>
  317. </li>
  318. <li class="md-nav__item">
  319. <a href="#4-lora" class="md-nav__link">
  320. <span class="md-ellipsis">
  321. 4. أخيرًا، الضبط الدقيق باستخدام LoRA
  322. </span>
  323. </a>
  324. </li>
  325. </ul>
  326. </nav>
  327. </li>
  328. </ul>
  329. </nav>
  330. </div>
  331. </div>
  332. </div>
  333. <div class="md-content" data-md-component="content">
  334. <article class="md-content__inner md-typeset">
  335. <a href="https://github.com/fishaudio/fish-speech/blob/main/docs/ar/finetune.md" title="عدل الصفحة" class="md-content__button md-icon" rel="edit">
  336. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
  337. </a>
  338. <a href="https://github.com/fishaudio/fish-speech/raw/main/docs/ar/finetune.md" title="عرض مصدر هذه الصفحة" class="md-content__button md-icon">
  339. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg>
  340. </a>
  341. <h1 id="fine-tuning">الضبط الدقيق (Fine-tuning)</h1>
  342. <p>من الواضح أنك عندما فتحت هذه الصفحة، لم تكن راضيًا عن أداء النموذج المدرب مسبقًا في وضع zero-shot. أنت ترغب في إجراء ضبط دقيق لنموذج لتحسين أدائه على مجموعة البيانات الخاصة بك.</p>
  343. <p>في الإصدار الحالي، ما عليك سوى إجراء الضبط الدقيق لجزء 'LLAMA'.</p>
  344. <h2 id="llama">الضبط الدقيق لـ LLAMA</h2>
  345. <h3 id="1">1. إعداد مجموعة البيانات</h3>
  346. <div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>.
  347. </span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>├── SPK1
  348. </span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>│ ├── 21.15-26.44.lab
  349. </span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>│ ├── 21.15-26.44.mp3
  350. </span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>│ ├── 27.51-29.98.lab
  351. </span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>│ ├── 27.51-29.98.mp3
  352. </span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>│ ├── 30.1-32.71.lab
  353. </span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a>│ └── 30.1-32.71.mp3
  354. </span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>└── SPK2
  355. </span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> ├── 38.79-40.85.lab
  356. </span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> └── 38.79-40.85.mp3
  357. </span></code></pre></div>
  358. <p>تحتاج إلى تحويل مجموعة البيانات الخاصة بك إلى التنسيق أعلاه ووضعها تحت مجلد <code>data</code>. يمكن أن يكون للملف الصوتي الامتدادات <code>.mp3</code>، <code>.wav</code>، أو <code>.flac</code>، ويجب أن يكون لملف التعليقات التوضيحية الامتداد <code>.lab</code>.</p>
  359. <div class="admonition info">
  360. <p class="admonition-title">تنسيق مجموعة البيانات</p>
  361. <p>يحتاج ملف التعليقات التوضيحية <code>.lab</code> فقط إلى احتواء النص المكتوب للمقطع الصوتي، دون الحاجة إلى تنسيق خاص. على سبيل المثال، إذا كان محتوى <code>hi.mp3</code> هو "مرحبًا، وداعًا"، فسيحتوي ملف <code>hi.lab</code> على سطر واحد من النص: "مرحبًا، وداعًا".</p>
  362. </div>
  363. <div class="admonition warning">
  364. <p class="admonition-title">تحذير</p>
  365. <p>يوصى بتطبيق تسوية جهارة الصوت (loudness normalization) على مجموعة البيانات. يمكنك استخدام <a href="https://github.com/fishaudio/audio-preprocess">fish-audio-preprocess</a> للقيام بذلك.
  366. <div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>fap<span class="w"> </span>loudness-norm<span class="w"> </span>data-raw<span class="w"> </span>data<span class="w"> </span>--clean
  367. </span></code></pre></div></p>
  368. </div>
  369. <h3 id="2-semantic-tokens">2. الاستخراج الدفعي للرموز الدلالية (semantic tokens)</h3>
  370. <p>تأكد من أنك قمت بتنزيل أوزان VQGAN. إذا لم تكن قد فعلت، قم بتشغيل الأمر التالي:</p>
  371. <div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>huggingface-cli<span class="w"> </span>download<span class="w"> </span>fishaudio/openaudio-s1-mini<span class="w"> </span>--local-dir<span class="w"> </span>checkpoints/openaudio-s1-mini
  372. </span></code></pre></div>
  373. <p>يمكنك بعد ذلك تشغيل الأمر التالي لاستخراج الرموز الدلالية:</p>
  374. <div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>python<span class="w"> </span>tools/vqgan/extract_vq.py<span class="w"> </span>data<span class="w"> </span><span class="se">\</span>
  375. </span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span>--num-workers<span class="w"> </span><span class="m">1</span><span class="w"> </span>--batch-size<span class="w"> </span><span class="m">16</span><span class="w"> </span><span class="se">\</span>
  376. </span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span>--config-name<span class="w"> </span><span class="s2">&quot;modded_dac_vq&quot;</span><span class="w"> </span><span class="se">\</span>
  377. </span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="w"> </span>--checkpoint-path<span class="w"> </span><span class="s2">&quot;checkpoints/openaudio-s1-mini/codec.pth&quot;</span>
  378. </span></code></pre></div>
  379. <div class="admonition note">
  380. <p class="admonition-title">ملاحظة</p>
  381. <p>يمكنك ضبط <code>--num-workers</code> و <code>--batch-size</code> لزيادة سرعة الاستخراج، ولكن يرجى التأكد من عدم تجاوز حد ذاكرة وحدة معالجة الرسومات (GPU) الخاصة بك.</p>
  382. </div>
  383. <p>سيقوم هذا الأمر بإنشاء ملفات <code>.npy</code> في مجلد <code>data</code>، كما هو موضح أدناه:</p>
  384. <div class="language-text highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>.
  385. </span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>├── SPK1
  386. </span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>│ ├── 21.15-26.44.lab
  387. </span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>│ ├── 21.15-26.44.mp3
  388. </span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>│ ├── 21.15-26.44.npy
  389. </span><span id="__span-4-6"><a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a>│ ├── 27.51-29.98.lab
  390. </span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>│ ├── 27.51-29.98.mp3
  391. </span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a>│ ├── 27.51-29.98.npy
  392. </span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a>│ ├── 30.1-32.71.lab
  393. </span><span id="__span-4-10"><a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a>│ ├── 30.1-32.71.mp3
  394. </span><span id="__span-4-11"><a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a>│ └── 30.1-32.71.npy
  395. </span><span id="__span-4-12"><a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a>└── SPK2
  396. </span><span id="__span-4-13"><a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> ├── 38.79-40.85.lab
  397. </span><span id="__span-4-14"><a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a> ├── 38.79-40.85.mp3
  398. </span><span id="__span-4-15"><a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a> └── 38.79-40.85.npy
  399. </span></code></pre></div>
  400. <h3 id="3-protobuf">3. حزم مجموعة البيانات في protobuf</h3>
  401. <div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>python<span class="w"> </span>tools/llama/build_dataset.py<span class="w"> </span><span class="se">\</span>
  402. </span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span>--input<span class="w"> </span><span class="s2">&quot;data&quot;</span><span class="w"> </span><span class="se">\</span>
  403. </span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span>--output<span class="w"> </span><span class="s2">&quot;data/protos&quot;</span><span class="w"> </span><span class="se">\</span>
  404. </span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span>--text-extension<span class="w"> </span>.lab<span class="w"> </span><span class="se">\</span>
  405. </span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="w"> </span>--num-workers<span class="w"> </span><span class="m">16</span>
  406. </span></code></pre></div>
  407. <p>بعد انتهاء تنفيذ الأمر، يجب أن ترى ملف <code>protos</code> في مجلد <code>data</code>.</p>
  408. <h3 id="4-lora">4. أخيرًا، الضبط الدقيق باستخدام LoRA</h3>
  409. <p>بالمثل، تأكد من أنك قمت بتنزيل أوزان <code>LLAMA</code>. إذا لم تكن قد فعلت، قم بتشغيل الأمر التالي:</p>
  410. <div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>huggingface-cli<span class="w"> </span>download<span class="w"> </span>fishaudio/openaudio-s1-mini<span class="w"> </span>--local-dir<span class="w"> </span>checkpoints/openaudio-s1-mini
  411. </span></code></pre></div>
  412. <p>أخيرًا، يمكنك بدء الضبط الدقيق عن طريق تشغيل الأمر التالي:</p>
  413. <div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>python<span class="w"> </span>fish_speech/train.py<span class="w"> </span>--config-name<span class="w"> </span>text2semantic_finetune<span class="w"> </span><span class="se">\</span>
  414. </span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="w"> </span><span class="nv">project</span><span class="o">=</span><span class="nv">$project</span><span class="w"> </span><span class="se">\</span>
  415. </span><span id="__span-7-3"><a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="w"> </span>+lora@model.model.lora_config<span class="o">=</span>r_8_alpha_16
  416. </span></code></pre></div>
  417. <div class="admonition note">
  418. <p class="admonition-title">ملاحظة</p>
  419. <p>يمكنك تعديل معلمات التدريب مثل <code>batch_size</code>، <code>gradient_accumulation_steps</code>، وما إلى ذلك لتناسب ذاكرة وحدة معالجة الرسومات الخاصة بك عن طريق تعديل <code>fish_speech/configs/text2semantic_finetune.yaml</code>.</p>
  420. </div>
  421. <div class="admonition note">
  422. <p class="admonition-title">ملاحظة</p>
  423. <p>لمستخدمي Windows، يمكنك استخدام <code>trainer.strategy.process_group_backend=gloo</code> لتجنب مشكلات <code>nccl</code>.</p>
  424. </div>
  425. <p>بعد اكتمال التدريب، يمكنك الرجوع إلى قسم <a href="../inference/">الاستدلال (inference)</a> لاختبار نموذجك.</p>
  426. <div class="admonition info">
  427. <p class="admonition-title">معلومات</p>
  428. <p>بشكل افتراضي، سيتعلم النموذج فقط أنماط كلام المتحدث وليس جرس الصوت (timbre). لا تزال بحاجة إلى استخدام التلقينات (prompts) لضمان استقرار جرس الصوت.
  429. إذا كنت ترغب في تعلم جرس الصوت، يمكنك زيادة عدد خطوات التدريب، ولكن هذا قد يؤدي إلى الإفراط في التخصيص (overfitting).</p>
  430. </div>
  431. <p>بعد التدريب، تحتاج إلى تحويل أوزان LoRA إلى أوزان عادية قبل إجراء الاستدلال.</p>
  432. <div class="language-bash highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>python<span class="w"> </span>tools/llama/merge_lora.py<span class="w"> </span><span class="se">\</span>
  433. </span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="w"> </span>--lora-config<span class="w"> </span>r_8_alpha_16<span class="w"> </span><span class="se">\</span>
  434. </span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="w"> </span>--base-weight<span class="w"> </span>checkpoints/openaudio-s1-mini<span class="w"> </span><span class="se">\</span>
  435. </span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="w"> </span>--lora-weight<span class="w"> </span>results/<span class="nv">$project</span>/checkpoints/step_000000010.ckpt<span class="w"> </span><span class="se">\</span>
  436. </span><span id="__span-8-5"><a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span>--output<span class="w"> </span>checkpoints/openaudio-s1-mini-yth-lora/
  437. </span></code></pre></div>
  438. <div class="admonition note">
  439. <p class="admonition-title">ملاحظة</p>
  440. <p>يمكنك أيضًا تجربة نقاط تحقق (checkpoints) أخرى. نقترح استخدام أقدم نقطة تحقق تلبي متطلباتك، حيث إنها غالبًا ما تؤدي أداءً أفضل على البيانات خارج التوزيع (OOD).</p>
  441. </div>
  442. </article>
  443. </div>
  444. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  445. </div>
  446. </main>
  447. <footer class="md-footer">
  448. <nav class="md-footer__inner md-grid" aria-label="هامش سفلي" >
  449. <a href="../install/" class="md-footer__link md-footer__link--prev" aria-label="السابقة: التثبيت">
  450. <div class="md-footer__button md-icon">
  451. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
  452. </div>
  453. <div class="md-footer__title">
  454. <span class="md-footer__direction">
  455. السابقة
  456. </span>
  457. <div class="md-ellipsis">
  458. التثبيت
  459. </div>
  460. </div>
  461. </a>
  462. <a href="../inference/" class="md-footer__link md-footer__link--next" aria-label="التالية: الاستنتاج">
  463. <div class="md-footer__title">
  464. <span class="md-footer__direction">
  465. التالية
  466. </span>
  467. <div class="md-ellipsis">
  468. الاستنتاج
  469. </div>
  470. </div>
  471. <div class="md-footer__button md-icon">
  472. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
  473. </div>
  474. </a>
  475. </nav>
  476. <div class="md-footer-meta md-typeset">
  477. <div class="md-footer-meta__inner md-grid">
  478. <div class="md-copyright">
  479. <div class="md-copyright__highlight">
  480. Copyright &copy; 2023-2025 by Fish Audio
  481. </div>
  482. Made with
  483. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  484. Material for MkDocs
  485. </a>
  486. </div>
  487. <div class="md-social">
  488. <a href="https://discord.gg/Es5qTB9BcN" target="_blank" rel="noopener" title="discord.gg" class="md-social__link">
  489. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M492.5 69.8c-.2-.3-.4-.6-.8-.7-38.1-17.5-78.4-30-119.7-37.1-.4-.1-.8 0-1.1.1s-.6.4-.8.8c-5.5 9.9-10.5 20.2-14.9 30.6-44.6-6.8-89.9-6.8-134.4 0-4.5-10.5-9.5-20.7-15.1-30.6-.2-.3-.5-.6-.8-.8s-.7-.2-1.1-.2C162.5 39 122.2 51.5 84.1 69c-.3.1-.6.4-.8.7C7.1 183.5-13.8 294.6-3.6 404.2c0 .3.1.5.2.8s.3.4.5.6c44.4 32.9 94 58 146.8 74.2.4.1.8.1 1.1 0s.7-.4.9-.7c11.3-15.4 21.4-31.8 30-48.8.1-.2.2-.5.2-.8s0-.5-.1-.8-.2-.5-.4-.6-.4-.3-.7-.4c-15.8-6.1-31.2-13.4-45.9-21.9-.3-.2-.5-.4-.7-.6s-.3-.6-.3-.9 0-.6.2-.9.3-.5.6-.7c3.1-2.3 6.2-4.7 9.1-7.1.3-.2.6-.4.9-.4s.7 0 1 .1c96.2 43.9 200.4 43.9 295.5 0 .3-.1.7-.2 1-.2s.7.2.9.4c2.9 2.4 6 4.9 9.1 7.2.2.2.4.4.6.7s.2.6.2.9-.1.6-.3.9-.4.5-.6.6c-14.7 8.6-30 15.9-45.9 21.8-.2.1-.5.2-.7.4s-.3.4-.4.7-.1.5-.1.8.1.5.2.8c8.8 17 18.8 33.3 30 48.8.2.3.6.6.9.7s.8.1 1.1 0c52.9-16.2 102.6-41.3 147.1-74.2.2-.2.4-.4.5-.6s.2-.5.2-.8c12.3-126.8-20.5-236.9-86.9-334.5zm-302 267.7c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.4 59.2-52.8 59.2m195.4 0c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.2 59.2-52.8 59.2"/></svg>
  490. </a>
  491. <a href="https://hub.docker.com/r/fishaudio/fish-speech" target="_blank" rel="noopener" title="hub.docker.com" class="md-social__link">
  492. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M349.9 236.3h-66.1v-59.4h66.1zm0-204.3h-66.1v60.7h66.1zm78.2 144.8H362v59.4h66.1zm-156.3-72.1h-66.1v60.1h66.1zm78.1 0h-66.1v60.1h66.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1zm78.1 0h-66.1v59.4h66.1zm-78.1-72.1h-66.1v60.1h66.1z"/></svg>
  493. </a>
  494. <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=jCKlUP7QgSm9kh95UlBoYv6s1I-Apl1M&authKey=xI5ttVAp3do68IpEYEalwXSYZFdfxZSkah%2BctF5FIMyN2NqAa003vFtLqJyAVRfF&noverify=0&group_code=593946093" target="_blank" rel="noopener" title="qm.qq.com" class="md-social__link">
  495. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M434.1 420.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.1 72.2-51 101.8 16.8 5.2 54.8 19.2 45.8 34.4-7.3 12.3-125.5 7.9-159.6 4-34.1 3.8-152.3 8.3-159.6-4-9-15.2 28.9-29.2 45.8-34.4-34.9-29.5-51.1-70.4-51.1-101.8 0 0-33.3 54.1-44.9 52.7-5.4-.6-12.4-29.6 9.3-99.7 10.3-33 22-60.5 40.1-105.8C60.9 98 109.2-.1 224.3-.1 338-.1 387.5 96 384.6 214.9c18.1 45.2 29.9 72.9 40.1 105.8 21.8 70.1 14.7 99.1 9.3 99.7z"/></svg>
  496. </a>
  497. </div>
  498. </div>
  499. </div>
  500. </footer>
  501. </div>
  502. <div class="md-dialog" data-md-component="dialog">
  503. <div class="md-dialog__inner md-typeset"></div>
  504. </div>
  505. <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["content.action.edit", "content.action.view", "navigation.tracking", "navigation.footer", "search", "search.suggest", "search.highlight", "search.share", "content.code.copy"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "\u062a\u0645 \u0627\u0644\u0646\u0633\u062e \u0627\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629", "clipboard.copy": "\u0646\u0633\u062e \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629", "search.result.more.one": "\u0623\u0643\u062b\u0631 \u0645\u0646 1 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062d\u0629", "search.result.more.other": "\u0623\u0643\u062b\u0631 \u0645\u0646 # \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062d\u0629", "search.result.none": "\u0644\u0627 \u062a\u0648\u062c\u062f \u0646\u062a\u0627\u0626\u062c", "search.result.one": "\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0628\u062d\u062b \u0645\u0633\u062a\u0646\u062f \u0648\u0627\u062d\u062f", "search.result.other": "\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0628\u062d\u062b # \u0645\u0633\u062a\u0646\u062f\u0627\u062a", "search.result.placeholder": "\u0627\u0643\u062a\u0628 \u0644\u0628\u062f\u0621 \u0627\u0644\u0628\u062d\u062b", "search.result.term.missing": "\u0645\u0641\u0642\u0648\u062f", "select.version": "\u0625\u062e\u062a\u0631 \u0627\u0644\u0625\u0635\u062f\u0627\u0631"}, "version": null}</script>
  506. <script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
  507. </body>
  508. </html>