@synsci/cli-darwin-x64 1.1.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/bin/skills/accelerate/SKILL.md +332 -0
  2. package/bin/skills/accelerate/references/custom-plugins.md +453 -0
  3. package/bin/skills/accelerate/references/megatron-integration.md +489 -0
  4. package/bin/skills/accelerate/references/performance.md +525 -0
  5. package/bin/skills/audiocraft/SKILL.md +564 -0
  6. package/bin/skills/audiocraft/references/advanced-usage.md +666 -0
  7. package/bin/skills/audiocraft/references/troubleshooting.md +504 -0
  8. package/bin/skills/autogpt/SKILL.md +403 -0
  9. package/bin/skills/autogpt/references/advanced-usage.md +535 -0
  10. package/bin/skills/autogpt/references/troubleshooting.md +420 -0
  11. package/bin/skills/awq/SKILL.md +310 -0
  12. package/bin/skills/awq/references/advanced-usage.md +324 -0
  13. package/bin/skills/awq/references/troubleshooting.md +344 -0
  14. package/bin/skills/axolotl/SKILL.md +158 -0
  15. package/bin/skills/axolotl/references/api.md +5548 -0
  16. package/bin/skills/axolotl/references/dataset-formats.md +1029 -0
  17. package/bin/skills/axolotl/references/index.md +15 -0
  18. package/bin/skills/axolotl/references/other.md +3563 -0
  19. package/bin/skills/bigcode-evaluation-harness/SKILL.md +405 -0
  20. package/bin/skills/bigcode-evaluation-harness/references/benchmarks.md +393 -0
  21. package/bin/skills/bigcode-evaluation-harness/references/custom-tasks.md +424 -0
  22. package/bin/skills/bigcode-evaluation-harness/references/issues.md +394 -0
  23. package/bin/skills/bitsandbytes/SKILL.md +411 -0
  24. package/bin/skills/bitsandbytes/references/memory-optimization.md +521 -0
  25. package/bin/skills/bitsandbytes/references/qlora-training.md +521 -0
  26. package/bin/skills/bitsandbytes/references/quantization-formats.md +447 -0
  27. package/bin/skills/blip-2/SKILL.md +564 -0
  28. package/bin/skills/blip-2/references/advanced-usage.md +680 -0
  29. package/bin/skills/blip-2/references/troubleshooting.md +526 -0
  30. package/bin/skills/chroma/SKILL.md +406 -0
  31. package/bin/skills/chroma/references/integration.md +38 -0
  32. package/bin/skills/clip/SKILL.md +253 -0
  33. package/bin/skills/clip/references/applications.md +207 -0
  34. package/bin/skills/constitutional-ai/SKILL.md +290 -0
  35. package/bin/skills/crewai/SKILL.md +498 -0
  36. package/bin/skills/crewai/references/flows.md +438 -0
  37. package/bin/skills/crewai/references/tools.md +429 -0
  38. package/bin/skills/crewai/references/troubleshooting.md +480 -0
  39. package/bin/skills/deepspeed/SKILL.md +141 -0
  40. package/bin/skills/deepspeed/references/08.md +17 -0
  41. package/bin/skills/deepspeed/references/09.md +173 -0
  42. package/bin/skills/deepspeed/references/2020.md +378 -0
  43. package/bin/skills/deepspeed/references/2023.md +279 -0
  44. package/bin/skills/deepspeed/references/assets.md +179 -0
  45. package/bin/skills/deepspeed/references/index.md +35 -0
  46. package/bin/skills/deepspeed/references/mii.md +118 -0
  47. package/bin/skills/deepspeed/references/other.md +1191 -0
  48. package/bin/skills/deepspeed/references/tutorials.md +6554 -0
  49. package/bin/skills/dspy/SKILL.md +590 -0
  50. package/bin/skills/dspy/references/examples.md +663 -0
  51. package/bin/skills/dspy/references/modules.md +475 -0
  52. package/bin/skills/dspy/references/optimizers.md +566 -0
  53. package/bin/skills/faiss/SKILL.md +221 -0
  54. package/bin/skills/faiss/references/index_types.md +280 -0
  55. package/bin/skills/flash-attention/SKILL.md +367 -0
  56. package/bin/skills/flash-attention/references/benchmarks.md +215 -0
  57. package/bin/skills/flash-attention/references/transformers-integration.md +293 -0
  58. package/bin/skills/gguf/SKILL.md +427 -0
  59. package/bin/skills/gguf/references/advanced-usage.md +504 -0
  60. package/bin/skills/gguf/references/troubleshooting.md +442 -0
  61. package/bin/skills/gptq/SKILL.md +450 -0
  62. package/bin/skills/gptq/references/calibration.md +337 -0
  63. package/bin/skills/gptq/references/integration.md +129 -0
  64. package/bin/skills/gptq/references/troubleshooting.md +95 -0
  65. package/bin/skills/grpo-rl-training/README.md +97 -0
  66. package/bin/skills/grpo-rl-training/SKILL.md +572 -0
  67. package/bin/skills/grpo-rl-training/examples/reward_functions_library.py +393 -0
  68. package/bin/skills/grpo-rl-training/templates/basic_grpo_training.py +228 -0
  69. package/bin/skills/guidance/SKILL.md +572 -0
  70. package/bin/skills/guidance/references/backends.md +554 -0
  71. package/bin/skills/guidance/references/constraints.md +674 -0
  72. package/bin/skills/guidance/references/examples.md +767 -0
  73. package/bin/skills/hqq/SKILL.md +445 -0
  74. package/bin/skills/hqq/references/advanced-usage.md +528 -0
  75. package/bin/skills/hqq/references/troubleshooting.md +503 -0
  76. package/bin/skills/hugging-face-cli/SKILL.md +191 -0
  77. package/bin/skills/hugging-face-cli/references/commands.md +954 -0
  78. package/bin/skills/hugging-face-cli/references/examples.md +374 -0
  79. package/bin/skills/hugging-face-datasets/SKILL.md +547 -0
  80. package/bin/skills/hugging-face-datasets/examples/diverse_training_examples.json +239 -0
  81. package/bin/skills/hugging-face-datasets/examples/system_prompt_template.txt +196 -0
  82. package/bin/skills/hugging-face-datasets/examples/training_examples.json +176 -0
  83. package/bin/skills/hugging-face-datasets/scripts/dataset_manager.py +522 -0
  84. package/bin/skills/hugging-face-datasets/scripts/sql_manager.py +844 -0
  85. package/bin/skills/hugging-face-datasets/templates/chat.json +55 -0
  86. package/bin/skills/hugging-face-datasets/templates/classification.json +62 -0
  87. package/bin/skills/hugging-face-datasets/templates/completion.json +51 -0
  88. package/bin/skills/hugging-face-datasets/templates/custom.json +75 -0
  89. package/bin/skills/hugging-face-datasets/templates/qa.json +54 -0
  90. package/bin/skills/hugging-face-datasets/templates/tabular.json +81 -0
  91. package/bin/skills/hugging-face-evaluation/SKILL.md +656 -0
  92. package/bin/skills/hugging-face-evaluation/examples/USAGE_EXAMPLES.md +382 -0
  93. package/bin/skills/hugging-face-evaluation/examples/artificial_analysis_to_hub.py +141 -0
  94. package/bin/skills/hugging-face-evaluation/examples/example_readme_tables.md +135 -0
  95. package/bin/skills/hugging-face-evaluation/examples/metric_mapping.json +50 -0
  96. package/bin/skills/hugging-face-evaluation/requirements.txt +20 -0
  97. package/bin/skills/hugging-face-evaluation/scripts/evaluation_manager.py +1374 -0
  98. package/bin/skills/hugging-face-evaluation/scripts/inspect_eval_uv.py +104 -0
  99. package/bin/skills/hugging-face-evaluation/scripts/inspect_vllm_uv.py +317 -0
  100. package/bin/skills/hugging-face-evaluation/scripts/lighteval_vllm_uv.py +303 -0
  101. package/bin/skills/hugging-face-evaluation/scripts/run_eval_job.py +98 -0
  102. package/bin/skills/hugging-face-evaluation/scripts/run_vllm_eval_job.py +331 -0
  103. package/bin/skills/hugging-face-evaluation/scripts/test_extraction.py +206 -0
  104. package/bin/skills/hugging-face-jobs/SKILL.md +1041 -0
  105. package/bin/skills/hugging-face-jobs/index.html +216 -0
  106. package/bin/skills/hugging-face-jobs/references/hardware_guide.md +336 -0
  107. package/bin/skills/hugging-face-jobs/references/hub_saving.md +352 -0
  108. package/bin/skills/hugging-face-jobs/references/token_usage.md +546 -0
  109. package/bin/skills/hugging-face-jobs/references/troubleshooting.md +475 -0
  110. package/bin/skills/hugging-face-jobs/scripts/cot-self-instruct.py +718 -0
  111. package/bin/skills/hugging-face-jobs/scripts/finepdfs-stats.py +546 -0
  112. package/bin/skills/hugging-face-jobs/scripts/generate-responses.py +587 -0
  113. package/bin/skills/hugging-face-model-trainer/SKILL.md +711 -0
  114. package/bin/skills/hugging-face-model-trainer/references/gguf_conversion.md +296 -0
  115. package/bin/skills/hugging-face-model-trainer/references/hardware_guide.md +283 -0
  116. package/bin/skills/hugging-face-model-trainer/references/hub_saving.md +364 -0
  117. package/bin/skills/hugging-face-model-trainer/references/reliability_principles.md +371 -0
  118. package/bin/skills/hugging-face-model-trainer/references/trackio_guide.md +189 -0
  119. package/bin/skills/hugging-face-model-trainer/references/training_methods.md +150 -0
  120. package/bin/skills/hugging-face-model-trainer/references/training_patterns.md +203 -0
  121. package/bin/skills/hugging-face-model-trainer/references/troubleshooting.md +282 -0
  122. package/bin/skills/hugging-face-model-trainer/scripts/convert_to_gguf.py +424 -0
  123. package/bin/skills/hugging-face-model-trainer/scripts/dataset_inspector.py +417 -0
  124. package/bin/skills/hugging-face-model-trainer/scripts/estimate_cost.py +150 -0
  125. package/bin/skills/hugging-face-model-trainer/scripts/train_dpo_example.py +106 -0
  126. package/bin/skills/hugging-face-model-trainer/scripts/train_grpo_example.py +89 -0
  127. package/bin/skills/hugging-face-model-trainer/scripts/train_sft_example.py +122 -0
  128. package/bin/skills/hugging-face-paper-publisher/SKILL.md +627 -0
  129. package/bin/skills/hugging-face-paper-publisher/examples/example_usage.md +327 -0
  130. package/bin/skills/hugging-face-paper-publisher/references/quick_reference.md +216 -0
  131. package/bin/skills/hugging-face-paper-publisher/scripts/paper_manager.py +508 -0
  132. package/bin/skills/hugging-face-paper-publisher/templates/arxiv.md +299 -0
  133. package/bin/skills/hugging-face-paper-publisher/templates/ml-report.md +358 -0
  134. package/bin/skills/hugging-face-paper-publisher/templates/modern.md +319 -0
  135. package/bin/skills/hugging-face-paper-publisher/templates/standard.md +201 -0
  136. package/bin/skills/hugging-face-tool-builder/SKILL.md +115 -0
  137. package/bin/skills/hugging-face-tool-builder/references/baseline_hf_api.py +57 -0
  138. package/bin/skills/hugging-face-tool-builder/references/baseline_hf_api.sh +40 -0
  139. package/bin/skills/hugging-face-tool-builder/references/baseline_hf_api.tsx +57 -0
  140. package/bin/skills/hugging-face-tool-builder/references/find_models_by_paper.sh +230 -0
  141. package/bin/skills/hugging-face-tool-builder/references/hf_enrich_models.sh +96 -0
  142. package/bin/skills/hugging-face-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  143. package/bin/skills/hugging-face-tool-builder/references/hf_model_papers_auth.sh +171 -0
  144. package/bin/skills/hugging-face-trackio/SKILL.md +65 -0
  145. package/bin/skills/hugging-face-trackio/references/logging_metrics.md +206 -0
  146. package/bin/skills/hugging-face-trackio/references/retrieving_metrics.md +223 -0
  147. package/bin/skills/huggingface-tokenizers/SKILL.md +516 -0
  148. package/bin/skills/huggingface-tokenizers/references/algorithms.md +653 -0
  149. package/bin/skills/huggingface-tokenizers/references/integration.md +637 -0
  150. package/bin/skills/huggingface-tokenizers/references/pipeline.md +723 -0
  151. package/bin/skills/huggingface-tokenizers/references/training.md +565 -0
  152. package/bin/skills/instructor/SKILL.md +740 -0
  153. package/bin/skills/instructor/references/examples.md +107 -0
  154. package/bin/skills/instructor/references/providers.md +70 -0
  155. package/bin/skills/instructor/references/validation.md +606 -0
  156. package/bin/skills/knowledge-distillation/SKILL.md +458 -0
  157. package/bin/skills/knowledge-distillation/references/minillm.md +334 -0
  158. package/bin/skills/lambda-labs/SKILL.md +545 -0
  159. package/bin/skills/lambda-labs/references/advanced-usage.md +611 -0
  160. package/bin/skills/lambda-labs/references/troubleshooting.md +530 -0
  161. package/bin/skills/langchain/SKILL.md +480 -0
  162. package/bin/skills/langchain/references/agents.md +499 -0
  163. package/bin/skills/langchain/references/integration.md +562 -0
  164. package/bin/skills/langchain/references/rag.md +600 -0
  165. package/bin/skills/langsmith/SKILL.md +422 -0
  166. package/bin/skills/langsmith/references/advanced-usage.md +548 -0
  167. package/bin/skills/langsmith/references/troubleshooting.md +537 -0
  168. package/bin/skills/litgpt/SKILL.md +469 -0
  169. package/bin/skills/litgpt/references/custom-models.md +568 -0
  170. package/bin/skills/litgpt/references/distributed-training.md +451 -0
  171. package/bin/skills/litgpt/references/supported-models.md +336 -0
  172. package/bin/skills/litgpt/references/training-recipes.md +619 -0
  173. package/bin/skills/llama-cpp/SKILL.md +258 -0
  174. package/bin/skills/llama-cpp/references/optimization.md +89 -0
  175. package/bin/skills/llama-cpp/references/quantization.md +213 -0
  176. package/bin/skills/llama-cpp/references/server.md +125 -0
  177. package/bin/skills/llama-factory/SKILL.md +80 -0
  178. package/bin/skills/llama-factory/references/_images.md +23 -0
  179. package/bin/skills/llama-factory/references/advanced.md +1055 -0
  180. package/bin/skills/llama-factory/references/getting_started.md +349 -0
  181. package/bin/skills/llama-factory/references/index.md +19 -0
  182. package/bin/skills/llama-factory/references/other.md +31 -0
  183. package/bin/skills/llamaguard/SKILL.md +337 -0
  184. package/bin/skills/llamaindex/SKILL.md +569 -0
  185. package/bin/skills/llamaindex/references/agents.md +83 -0
  186. package/bin/skills/llamaindex/references/data_connectors.md +108 -0
  187. package/bin/skills/llamaindex/references/query_engines.md +406 -0
  188. package/bin/skills/llava/SKILL.md +304 -0
  189. package/bin/skills/llava/references/training.md +197 -0
  190. package/bin/skills/lm-evaluation-harness/SKILL.md +490 -0
  191. package/bin/skills/lm-evaluation-harness/references/api-evaluation.md +490 -0
  192. package/bin/skills/lm-evaluation-harness/references/benchmark-guide.md +488 -0
  193. package/bin/skills/lm-evaluation-harness/references/custom-tasks.md +602 -0
  194. package/bin/skills/lm-evaluation-harness/references/distributed-eval.md +519 -0
  195. package/bin/skills/long-context/SKILL.md +536 -0
  196. package/bin/skills/long-context/references/extension_methods.md +468 -0
  197. package/bin/skills/long-context/references/fine_tuning.md +611 -0
  198. package/bin/skills/long-context/references/rope.md +402 -0
  199. package/bin/skills/mamba/SKILL.md +260 -0
  200. package/bin/skills/mamba/references/architecture-details.md +206 -0
  201. package/bin/skills/mamba/references/benchmarks.md +255 -0
  202. package/bin/skills/mamba/references/training-guide.md +388 -0
  203. package/bin/skills/megatron-core/SKILL.md +366 -0
  204. package/bin/skills/megatron-core/references/benchmarks.md +249 -0
  205. package/bin/skills/megatron-core/references/parallelism-guide.md +404 -0
  206. package/bin/skills/megatron-core/references/production-examples.md +473 -0
  207. package/bin/skills/megatron-core/references/training-recipes.md +547 -0
  208. package/bin/skills/miles/SKILL.md +315 -0
  209. package/bin/skills/miles/references/api-reference.md +141 -0
  210. package/bin/skills/miles/references/troubleshooting.md +352 -0
  211. package/bin/skills/mlflow/SKILL.md +704 -0
  212. package/bin/skills/mlflow/references/deployment.md +744 -0
  213. package/bin/skills/mlflow/references/model-registry.md +770 -0
  214. package/bin/skills/mlflow/references/tracking.md +680 -0
  215. package/bin/skills/modal/SKILL.md +341 -0
  216. package/bin/skills/modal/references/advanced-usage.md +503 -0
  217. package/bin/skills/modal/references/troubleshooting.md +494 -0
  218. package/bin/skills/model-merging/SKILL.md +539 -0
  219. package/bin/skills/model-merging/references/evaluation.md +462 -0
  220. package/bin/skills/model-merging/references/examples.md +428 -0
  221. package/bin/skills/model-merging/references/methods.md +352 -0
  222. package/bin/skills/model-pruning/SKILL.md +495 -0
  223. package/bin/skills/model-pruning/references/wanda.md +347 -0
  224. package/bin/skills/moe-training/SKILL.md +526 -0
  225. package/bin/skills/moe-training/references/architectures.md +432 -0
  226. package/bin/skills/moe-training/references/inference.md +348 -0
  227. package/bin/skills/moe-training/references/training.md +425 -0
  228. package/bin/skills/nanogpt/SKILL.md +290 -0
  229. package/bin/skills/nanogpt/references/architecture.md +382 -0
  230. package/bin/skills/nanogpt/references/data.md +476 -0
  231. package/bin/skills/nanogpt/references/training.md +564 -0
  232. package/bin/skills/nemo-curator/SKILL.md +383 -0
  233. package/bin/skills/nemo-curator/references/deduplication.md +87 -0
  234. package/bin/skills/nemo-curator/references/filtering.md +102 -0
  235. package/bin/skills/nemo-evaluator/SKILL.md +494 -0
  236. package/bin/skills/nemo-evaluator/references/adapter-system.md +340 -0
  237. package/bin/skills/nemo-evaluator/references/configuration.md +447 -0
  238. package/bin/skills/nemo-evaluator/references/custom-benchmarks.md +315 -0
  239. package/bin/skills/nemo-evaluator/references/execution-backends.md +361 -0
  240. package/bin/skills/nemo-guardrails/SKILL.md +297 -0
  241. package/bin/skills/nnsight/SKILL.md +436 -0
  242. package/bin/skills/nnsight/references/README.md +78 -0
  243. package/bin/skills/nnsight/references/api.md +344 -0
  244. package/bin/skills/nnsight/references/tutorials.md +300 -0
  245. package/bin/skills/openrlhf/SKILL.md +249 -0
  246. package/bin/skills/openrlhf/references/algorithm-comparison.md +404 -0
  247. package/bin/skills/openrlhf/references/custom-rewards.md +530 -0
  248. package/bin/skills/openrlhf/references/hybrid-engine.md +287 -0
  249. package/bin/skills/openrlhf/references/multi-node-training.md +454 -0
  250. package/bin/skills/outlines/SKILL.md +652 -0
  251. package/bin/skills/outlines/references/backends.md +615 -0
  252. package/bin/skills/outlines/references/examples.md +773 -0
  253. package/bin/skills/outlines/references/json_generation.md +652 -0
  254. package/bin/skills/peft/SKILL.md +431 -0
  255. package/bin/skills/peft/references/advanced-usage.md +514 -0
  256. package/bin/skills/peft/references/troubleshooting.md +480 -0
  257. package/bin/skills/phoenix/SKILL.md +475 -0
  258. package/bin/skills/phoenix/references/advanced-usage.md +619 -0
  259. package/bin/skills/phoenix/references/troubleshooting.md +538 -0
  260. package/bin/skills/pinecone/SKILL.md +358 -0
  261. package/bin/skills/pinecone/references/deployment.md +181 -0
  262. package/bin/skills/pytorch-fsdp/SKILL.md +126 -0
  263. package/bin/skills/pytorch-fsdp/references/index.md +7 -0
  264. package/bin/skills/pytorch-fsdp/references/other.md +4249 -0
  265. package/bin/skills/pytorch-lightning/SKILL.md +346 -0
  266. package/bin/skills/pytorch-lightning/references/callbacks.md +436 -0
  267. package/bin/skills/pytorch-lightning/references/distributed.md +490 -0
  268. package/bin/skills/pytorch-lightning/references/hyperparameter-tuning.md +556 -0
  269. package/bin/skills/pyvene/SKILL.md +473 -0
  270. package/bin/skills/pyvene/references/README.md +73 -0
  271. package/bin/skills/pyvene/references/api.md +383 -0
  272. package/bin/skills/pyvene/references/tutorials.md +376 -0
  273. package/bin/skills/qdrant/SKILL.md +493 -0
  274. package/bin/skills/qdrant/references/advanced-usage.md +648 -0
  275. package/bin/skills/qdrant/references/troubleshooting.md +631 -0
  276. package/bin/skills/ray-data/SKILL.md +326 -0
  277. package/bin/skills/ray-data/references/integration.md +82 -0
  278. package/bin/skills/ray-data/references/transformations.md +83 -0
  279. package/bin/skills/ray-train/SKILL.md +406 -0
  280. package/bin/skills/ray-train/references/multi-node.md +628 -0
  281. package/bin/skills/rwkv/SKILL.md +260 -0
  282. package/bin/skills/rwkv/references/architecture-details.md +344 -0
  283. package/bin/skills/rwkv/references/rwkv7.md +386 -0
  284. package/bin/skills/rwkv/references/state-management.md +369 -0
  285. package/bin/skills/saelens/SKILL.md +386 -0
  286. package/bin/skills/saelens/references/README.md +70 -0
  287. package/bin/skills/saelens/references/api.md +333 -0
  288. package/bin/skills/saelens/references/tutorials.md +318 -0
  289. package/bin/skills/segment-anything/SKILL.md +500 -0
  290. package/bin/skills/segment-anything/references/advanced-usage.md +589 -0
  291. package/bin/skills/segment-anything/references/troubleshooting.md +484 -0
  292. package/bin/skills/sentence-transformers/SKILL.md +255 -0
  293. package/bin/skills/sentence-transformers/references/models.md +123 -0
  294. package/bin/skills/sentencepiece/SKILL.md +235 -0
  295. package/bin/skills/sentencepiece/references/algorithms.md +200 -0
  296. package/bin/skills/sentencepiece/references/training.md +304 -0
  297. package/bin/skills/sglang/SKILL.md +442 -0
  298. package/bin/skills/sglang/references/deployment.md +490 -0
  299. package/bin/skills/sglang/references/radix-attention.md +413 -0
  300. package/bin/skills/sglang/references/structured-generation.md +541 -0
  301. package/bin/skills/simpo/SKILL.md +219 -0
  302. package/bin/skills/simpo/references/datasets.md +478 -0
  303. package/bin/skills/simpo/references/hyperparameters.md +452 -0
  304. package/bin/skills/simpo/references/loss-functions.md +350 -0
  305. package/bin/skills/skypilot/SKILL.md +509 -0
  306. package/bin/skills/skypilot/references/advanced-usage.md +491 -0
  307. package/bin/skills/skypilot/references/troubleshooting.md +570 -0
  308. package/bin/skills/slime/SKILL.md +464 -0
  309. package/bin/skills/slime/references/api-reference.md +392 -0
  310. package/bin/skills/slime/references/troubleshooting.md +386 -0
  311. package/bin/skills/speculative-decoding/SKILL.md +467 -0
  312. package/bin/skills/speculative-decoding/references/lookahead.md +309 -0
  313. package/bin/skills/speculative-decoding/references/medusa.md +350 -0
  314. package/bin/skills/stable-diffusion/SKILL.md +519 -0
  315. package/bin/skills/stable-diffusion/references/advanced-usage.md +716 -0
  316. package/bin/skills/stable-diffusion/references/troubleshooting.md +555 -0
  317. package/bin/skills/tensorboard/SKILL.md +629 -0
  318. package/bin/skills/tensorboard/references/integrations.md +638 -0
  319. package/bin/skills/tensorboard/references/profiling.md +545 -0
  320. package/bin/skills/tensorboard/references/visualization.md +620 -0
  321. package/bin/skills/tensorrt-llm/SKILL.md +187 -0
  322. package/bin/skills/tensorrt-llm/references/multi-gpu.md +298 -0
  323. package/bin/skills/tensorrt-llm/references/optimization.md +242 -0
  324. package/bin/skills/tensorrt-llm/references/serving.md +470 -0
  325. package/bin/skills/tinker/SKILL.md +362 -0
  326. package/bin/skills/tinker/references/api-reference.md +168 -0
  327. package/bin/skills/tinker/references/getting-started.md +157 -0
  328. package/bin/skills/tinker/references/loss-functions.md +163 -0
  329. package/bin/skills/tinker/references/models-and-lora.md +139 -0
  330. package/bin/skills/tinker/references/recipes.md +280 -0
  331. package/bin/skills/tinker/references/reinforcement-learning.md +212 -0
  332. package/bin/skills/tinker/references/rendering.md +243 -0
  333. package/bin/skills/tinker/references/supervised-learning.md +232 -0
  334. package/bin/skills/tinker-training-cost/SKILL.md +187 -0
  335. package/bin/skills/tinker-training-cost/scripts/calculate_cost.py +123 -0
  336. package/bin/skills/torchforge/SKILL.md +433 -0
  337. package/bin/skills/torchforge/references/api-reference.md +327 -0
  338. package/bin/skills/torchforge/references/troubleshooting.md +409 -0
  339. package/bin/skills/torchtitan/SKILL.md +358 -0
  340. package/bin/skills/torchtitan/references/checkpoint.md +181 -0
  341. package/bin/skills/torchtitan/references/custom-models.md +258 -0
  342. package/bin/skills/torchtitan/references/float8.md +133 -0
  343. package/bin/skills/torchtitan/references/fsdp.md +126 -0
  344. package/bin/skills/transformer-lens/SKILL.md +346 -0
  345. package/bin/skills/transformer-lens/references/README.md +54 -0
  346. package/bin/skills/transformer-lens/references/api.md +362 -0
  347. package/bin/skills/transformer-lens/references/tutorials.md +339 -0
  348. package/bin/skills/trl-fine-tuning/SKILL.md +455 -0
  349. package/bin/skills/trl-fine-tuning/references/dpo-variants.md +227 -0
  350. package/bin/skills/trl-fine-tuning/references/online-rl.md +82 -0
  351. package/bin/skills/trl-fine-tuning/references/reward-modeling.md +122 -0
  352. package/bin/skills/trl-fine-tuning/references/sft-training.md +168 -0
  353. package/bin/skills/unsloth/SKILL.md +80 -0
  354. package/bin/skills/unsloth/references/index.md +7 -0
  355. package/bin/skills/unsloth/references/llms-full.md +16799 -0
  356. package/bin/skills/unsloth/references/llms-txt.md +12044 -0
  357. package/bin/skills/unsloth/references/llms.md +82 -0
  358. package/bin/skills/verl/SKILL.md +391 -0
  359. package/bin/skills/verl/references/api-reference.md +301 -0
  360. package/bin/skills/verl/references/troubleshooting.md +391 -0
  361. package/bin/skills/vllm/SKILL.md +364 -0
  362. package/bin/skills/vllm/references/optimization.md +226 -0
  363. package/bin/skills/vllm/references/quantization.md +284 -0
  364. package/bin/skills/vllm/references/server-deployment.md +255 -0
  365. package/bin/skills/vllm/references/troubleshooting.md +447 -0
  366. package/bin/skills/weights-and-biases/SKILL.md +590 -0
  367. package/bin/skills/weights-and-biases/references/artifacts.md +584 -0
  368. package/bin/skills/weights-and-biases/references/integrations.md +700 -0
  369. package/bin/skills/weights-and-biases/references/sweeps.md +847 -0
  370. package/bin/skills/whisper/SKILL.md +317 -0
  371. package/bin/skills/whisper/references/languages.md +189 -0
  372. package/bin/synsc +0 -0
  373. package/package.json +10 -0
@@ -0,0 +1,628 @@
1
+ # Ray Train Multi-Node Setup
2
+
3
+ ## Ray Cluster Architecture
4
+
5
+ Ray Train runs on a **Ray cluster** with one head node and multiple worker nodes.
6
+
7
+ **Components**:
8
+ - **Head node**: Coordinates workers, runs scheduling
9
+ - **Worker nodes**: Execute training tasks
10
+ - **Object store**: Shared memory across nodes (using Apache Arrow/Plasma)
11
+
12
+ ## Local Multi-Node Setup
13
+
14
+ ### Manual Cluster Setup
15
+
16
+ **Head node**:
17
+ ```bash
18
+ # Start Ray head
19
+ ray start --head --port=6379 --dashboard-host=0.0.0.0
20
+
21
+ # Output:
22
+ # Started Ray on this node with:
23
+ # - Head node IP: 192.168.1.100
24
+ # - Dashboard: http://192.168.1.100:8265
25
+ ```
26
+
27
+ **Worker nodes**:
28
+ ```bash
29
+ # Connect to head node
30
+ ray start --address=192.168.1.100:6379
31
+
32
+ # Output:
33
+ # Started Ray on this node.
34
+ # Connected to Ray cluster.
35
+ ```
36
+
37
+ **Training script**:
38
+ ```python
39
+ import ray
40
+ from ray.train.torch import TorchTrainer
41
+ from ray.train import ScalingConfig
42
+
43
+ # Connect to cluster
44
+ ray.init(address='auto') # Auto-detects cluster
45
+
46
+ # Train across all nodes
47
+ trainer = TorchTrainer(
48
+ train_func,
49
+ scaling_config=ScalingConfig(
50
+ num_workers=16, # Total workers across all nodes
51
+ use_gpu=True,
52
+ placement_strategy="SPREAD" # Spread across nodes
53
+ )
54
+ )
55
+
56
+ result = trainer.fit()
57
+ ```
58
+
59
+ ### Check Cluster Status
60
+
61
+ ```bash
62
+ # View cluster status
63
+ ray status
64
+
65
+ # Output:
66
+ # ======== Cluster Status ========
67
+ # Nodes: 4
68
+ # Total CPUs: 128
69
+ # Total GPUs: 32
70
+ # Total memory: 512 GB
71
+ ```
72
+
73
+ **Python API**:
74
+ ```python
75
+ import ray
76
+
77
+ ray.init(address='auto')
78
+
79
+ # Get cluster resources
80
+ print(ray.cluster_resources())
81
+ # {'CPU': 128.0, 'GPU': 32.0, 'memory': 549755813888, 'node:192.168.1.100': 1.0, ...}
82
+
83
+ # Get available resources
84
+ print(ray.available_resources())
85
+ ```
86
+
87
+ ## Cloud Deployments
88
+
89
+ ### AWS EC2 Cluster
90
+
91
+ **Cluster config** (`cluster.yaml`):
92
+ ```yaml
93
+ cluster_name: ray-train-cluster
94
+
95
+ max_workers: 3 # 3 worker nodes
96
+
97
+ provider:
98
+ type: aws
99
+ region: us-west-2
100
+ availability_zone: us-west-2a
101
+
102
+ auth:
103
+ ssh_user: ubuntu
104
+
105
+ head_node_type: head_node
106
+ available_node_types:
107
+ head_node:
108
+ node_config:
109
+ InstanceType: p3.2xlarge # V100 GPU
110
+ ImageId: ami-0a2363a9cff180a64 # Deep Learning AMI
111
+ resources: {"CPU": 8, "GPU": 1}
112
+ min_workers: 0
113
+ max_workers: 0
114
+
115
+ worker_node:
116
+ node_config:
117
+ InstanceType: p3.8xlarge # 4× V100
118
+ ImageId: ami-0a2363a9cff180a64
119
+ resources: {"CPU": 32, "GPU": 4}
120
+ min_workers: 3
121
+ max_workers: 3
122
+
123
+ setup_commands:
124
+ - pip install -U ray[train] torch transformers
125
+
126
+ head_setup_commands:
127
+ - pip install -U "ray[default]"
128
+ ```
129
+
130
+ **Launch cluster**:
131
+ ```bash
132
+ # Start cluster
133
+ ray up cluster.yaml
134
+
135
+ # SSH to head node
136
+ ray attach cluster.yaml
137
+
138
+ # Run training
139
+ python train.py
140
+
141
+ # Teardown
142
+ ray down cluster.yaml
143
+ ```
144
+
145
+ **Auto-submit job**:
146
+ ```bash
147
+ # Submit job from local machine
148
+ ray job submit \
149
+ --address http://<head-node-ip>:8265 \
150
+ --working-dir . \
151
+ -- python train.py
152
+ ```
153
+
154
+ ### GCP Cluster
155
+
156
+ **Cluster config** (`gcp-cluster.yaml`):
157
+ ```yaml
158
+ cluster_name: ray-train-gcp
159
+
160
+ provider:
161
+ type: gcp
162
+ region: us-central1
163
+ availability_zone: us-central1-a
164
+ project_id: my-project-id
165
+
166
+ auth:
167
+ ssh_user: ubuntu
168
+
169
+ head_node_type: head_node
170
+ available_node_types:
171
+ head_node:
172
+ node_config:
173
+ machineType: n1-standard-8
174
+ disks:
175
+ - boot: true
176
+ autoDelete: true
177
+ type: PERSISTENT
178
+ initializeParams:
179
+ diskSizeGb: 50
180
+ sourceImage: projects/deeplearning-platform-release/global/images/family/pytorch-latest-gpu
181
+ guestAccelerators:
182
+ - acceleratorType: nvidia-tesla-v100
183
+ acceleratorCount: 1
184
+ resources: {"CPU": 8, "GPU": 1}
185
+
186
+ worker_node:
187
+ node_config:
188
+ machineType: n1-highmem-16
189
+ disks:
190
+ - boot: true
191
+ autoDelete: true
192
+ type: PERSISTENT
193
+ initializeParams:
194
+ diskSizeGb: 100
195
+ sourceImage: projects/deeplearning-platform-release/global/images/family/pytorch-latest-gpu
196
+ guestAccelerators:
197
+ - acceleratorType: nvidia-tesla-v100
198
+ acceleratorCount: 4
199
+ resources: {"CPU": 16, "GPU": 4}
200
+ min_workers: 2
201
+ max_workers: 10
202
+
203
+ setup_commands:
204
+ - pip install -U ray[train] torch transformers
205
+ ```
206
+
207
+ **Launch**:
208
+ ```bash
209
+ ray up gcp-cluster.yaml --yes
210
+ ```
211
+
212
+ ### Azure Cluster
213
+
214
+ **Cluster config** (`azure-cluster.yaml`):
215
+ ```yaml
216
+ cluster_name: ray-train-azure
217
+
218
+ provider:
219
+ type: azure
220
+ location: eastus
221
+ resource_group: ray-cluster-rg
222
+ subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
223
+
224
+ auth:
225
+ ssh_user: ubuntu
226
+ ssh_private_key: ~/.ssh/id_rsa
227
+
228
+ head_node_type: head_node
229
+ available_node_types:
230
+ head_node:
231
+ node_config:
232
+ azure_arm_parameters:
233
+ vmSize: Standard_NC6 # K80 GPU
234
+ imagePublisher: microsoft-dsvm
235
+ imageOffer: ubuntu-1804
236
+ imageSku: 1804-gen2
237
+ imageVersion: latest
238
+ resources: {"CPU": 6, "GPU": 1}
239
+
240
+ worker_node:
241
+ node_config:
242
+ azure_arm_parameters:
243
+ vmSize: Standard_NC24 # 4× K80
244
+ imagePublisher: microsoft-dsvm
245
+ imageOffer: ubuntu-1804
246
+ imageSku: 1804-gen2
247
+ imageVersion: latest
248
+ resources: {"CPU": 24, "GPU": 4}
249
+ min_workers: 2
250
+ max_workers: 10
251
+ ```
252
+
253
+ ## Kubernetes Deployment
254
+
255
+ ### KubeRay Operator
256
+
257
+ **Install KubeRay**:
258
+ ```bash
259
+ # Add Helm repo
260
+ helm repo add kuberay https://ray-project.github.io/kuberay-helm/
261
+
262
+ # Install operator
263
+ helm install kuberay-operator kuberay/kuberay-operator --version 0.6.0
264
+ ```
265
+
266
+ **RayCluster manifest** (`ray-cluster.yaml`):
267
+ ```yaml
268
+ apiVersion: ray.io/v1alpha1
269
+ kind: RayCluster
270
+ metadata:
271
+ name: ray-train-cluster
272
+ spec:
273
+ rayVersion: '2.40.0'
274
+ headGroupSpec:
275
+ rayStartParams:
276
+ dashboard-host: '0.0.0.0'
277
+ template:
278
+ spec:
279
+ containers:
280
+ - name: ray-head
281
+ image: rayproject/ray:2.40.0-py310-gpu
282
+ resources:
283
+ limits:
284
+ cpu: "8"
285
+ memory: "32Gi"
286
+ nvidia.com/gpu: "1"
287
+ requests:
288
+ cpu: "8"
289
+ memory: "32Gi"
290
+ nvidia.com/gpu: "1"
291
+ ports:
292
+ - containerPort: 6379
293
+ name: gcs-server
294
+ - containerPort: 8265
295
+ name: dashboard
296
+ - containerPort: 10001
297
+ name: client
298
+
299
+ workerGroupSpecs:
300
+ - replicas: 4
301
+ minReplicas: 2
302
+ maxReplicas: 10
303
+ groupName: gpu-workers
304
+ rayStartParams: {}
305
+ template:
306
+ spec:
307
+ containers:
308
+ - name: ray-worker
309
+ image: rayproject/ray:2.40.0-py310-gpu
310
+ resources:
311
+ limits:
312
+ cpu: "16"
313
+ memory: "64Gi"
314
+ nvidia.com/gpu: "4"
315
+ requests:
316
+ cpu: "16"
317
+ memory: "64Gi"
318
+ nvidia.com/gpu: "4"
319
+ ```
320
+
321
+ **Deploy**:
322
+ ```bash
323
+ kubectl apply -f ray-cluster.yaml
324
+
325
+ # Check status
326
+ kubectl get rayclusters
327
+
328
+ # Access dashboard
329
+ kubectl port-forward service/ray-train-cluster-head-svc 8265:8265
330
+ # Open http://localhost:8265
331
+ ```
332
+
333
+ **Submit training job**:
334
+ ```bash
335
+ # Port-forward Ray client port
336
+ kubectl port-forward service/ray-train-cluster-head-svc 10001:10001
337
+
338
+ # Submit from local machine
339
+ RAY_ADDRESS="ray://localhost:10001" python train.py
340
+ ```
341
+
342
+ ## SLURM Integration
343
+
344
+ ### SLURM Job Script
345
+
346
+ **Launch Ray cluster** (`ray_cluster.sh`):
347
+ ```bash
348
+ #!/bin/bash
349
+ #SBATCH --job-name=ray-train
350
+ #SBATCH --nodes=4
351
+ #SBATCH --ntasks-per-node=1
352
+ #SBATCH --cpus-per-task=32
353
+ #SBATCH --gres=gpu:8
354
+ #SBATCH --time=24:00:00
355
+ #SBATCH --output=ray_train_%j.out
356
+
357
+ # Load modules
358
+ module load cuda/11.8
359
+ module load python/3.10
360
+
361
+ # Activate environment
362
+ source ~/venv/bin/activate
363
+
364
+ # Get head node
365
+ head_node=$(hostname)
366
+ head_node_ip=$(hostname -I | awk '{print $1}')
367
+
368
+ # Start Ray head on first node
369
+ if [ "$SLURM_NODEID" -eq 0 ]; then
370
+ echo "Starting Ray head node at $head_node_ip"
371
+ ray start --head --node-ip-address=$head_node_ip \
372
+ --port=6379 \
373
+ --dashboard-host=0.0.0.0 \
374
+ --num-cpus=$SLURM_CPUS_PER_TASK \
375
+ --num-gpus=$SLURM_GPUS_ON_NODE \
376
+ --block &
377
+ sleep 10
378
+ fi
379
+
380
+ # Start Ray workers on other nodes
381
+ if [ "$SLURM_NODEID" -ne 0 ]; then
382
+ echo "Starting Ray worker node"
383
+ ray start --address=$head_node_ip:6379 \
384
+ --num-cpus=$SLURM_CPUS_PER_TASK \
385
+ --num-gpus=$SLURM_GPUS_ON_NODE \
386
+ --block &
387
+ fi
388
+
389
+ sleep 5
390
+
391
+ # Run training on head node only
392
+ if [ "$SLURM_NODEID" -eq 0 ]; then
393
+ echo "Running training..."
394
+ python train.py --address=$head_node_ip:6379
395
+ fi
396
+
397
+ # Wait for all processes
398
+ wait
399
+ ```
400
+
401
+ **Submit job**:
402
+ ```bash
403
+ sbatch ray_cluster.sh
404
+ ```
405
+
406
+ **Training script** (`train.py`):
407
+ ```python
408
+ import argparse
409
+ import ray
410
+ from ray.train.torch import TorchTrainer
411
+ from ray.train import ScalingConfig
412
+
413
+ def main(args):
414
+ # Connect to Ray cluster
415
+ ray.init(address=args.address)
416
+
417
+ # Train across all SLURM nodes
418
+ trainer = TorchTrainer(
419
+ train_func,
420
+ scaling_config=ScalingConfig(
421
+ num_workers=32, # 4 nodes × 8 GPUs
422
+ use_gpu=True,
423
+ placement_strategy="SPREAD"
424
+ )
425
+ )
426
+
427
+ result = trainer.fit()
428
+ print(f"Training complete: {result.metrics}")
429
+
430
+ if __name__ == '__main__':
431
+ parser = argparse.ArgumentParser()
432
+ parser.add_argument('--address', required=True)
433
+ args = parser.parse_args()
434
+ main(args)
435
+ ```
436
+
437
+ ## Autoscaling
438
+
439
+ ### Enable Autoscaling
440
+
441
+ **Cluster config with autoscaling**:
442
+ ```yaml
443
+ cluster_name: ray-autoscale
444
+
445
+ max_workers: 10 # Maximum worker nodes
446
+
447
+ idle_timeout_minutes: 5 # Shutdown idle workers after 5 min
448
+
449
+ provider:
450
+ type: aws
451
+ region: us-west-2
452
+
453
+ available_node_types:
454
+ worker_node:
455
+ min_workers: 2 # Always keep 2 workers
456
+ max_workers: 10 # Scale up to 10
457
+ resources: {"CPU": 32, "GPU": 4}
458
+ node_config:
459
+ InstanceType: p3.8xlarge
460
+ ```
461
+
462
+ **Training with autoscaling**:
463
+ ```python
464
+ from ray.train.torch import TorchTrainer
465
+ from ray.train import ScalingConfig, RunConfig
466
+
467
+ # Request resources, Ray autoscaler adds nodes as needed
468
+ trainer = TorchTrainer(
469
+ train_func,
470
+ scaling_config=ScalingConfig(
471
+ num_workers=40, # Ray will autoscale to 10 nodes (40 GPUs)
472
+ use_gpu=True,
473
+ trainer_resources={"CPU": 0} # Trainer doesn't need resources
474
+ ),
475
+ run_config=RunConfig(
476
+ name="autoscale-training",
477
+ storage_path="s3://my-bucket/ray-results"
478
+ )
479
+ )
480
+
481
+ result = trainer.fit()
482
+ ```
483
+
484
+ ## Network Configuration
485
+
486
+ ### Firewall Rules
487
+
488
+ **Required ports**:
489
+ - **6379**: Ray GCS (Global Control Store)
490
+ - **8265**: Ray Dashboard
491
+ - **10001**: Ray Client
492
+ - **8000-9000**: Worker communication (configurable)
493
+
494
+ **AWS Security Group**:
495
+ ```bash
496
+ # Allow Ray ports within cluster
497
+ aws ec2 authorize-security-group-ingress \
498
+ --group-id sg-xxxxx \
499
+ --source-group sg-xxxxx \
500
+ --protocol tcp \
501
+ --port 6379
502
+
503
+ aws ec2 authorize-security-group-ingress \
504
+ --group-id sg-xxxxx \
505
+ --source-group sg-xxxxx \
506
+ --protocol tcp \
507
+ --port 8000-9000
508
+ ```
509
+
510
+ ### High-Performance Networking
511
+
512
+ **Enable InfiniBand/RDMA** (on-prem):
513
+ ```bash
514
+ # Set Ray to use specific network interface
515
+ export RAY_BACKEND_LOG_LEVEL=debug
516
+ export NCCL_SOCKET_IFNAME=ib0 # InfiniBand interface
517
+ export NCCL_IB_DISABLE=0 # Enable InfiniBand
518
+
519
+ ray start --head --node-ip-address=$(ip addr show ib0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1)
520
+ ```
521
+
522
+ **AWS Enhanced Networking**:
523
+ ```yaml
524
+ # Use ENA (Elastic Network Adapter)
525
+ worker_node:
526
+ node_config:
527
+ InstanceType: p3dn.24xlarge # 100 Gbps networking
528
+ EbsOptimized: true
529
+ NetworkInterfaces:
530
+ - DeviceIndex: 0
531
+ DeleteOnTermination: true
532
+ InterfaceType: ena # Enhanced networking
533
+ ```
534
+
535
+ ## Monitoring and Debugging
536
+
537
+ ### Ray Dashboard
538
+
539
+ **Access dashboard**:
540
+ ```bash
541
+ # Local: http://localhost:8265
542
+ # Remote: http://<head-node-ip>:8265
543
+
544
+ # SSH tunnel for secure access
545
+ ssh -L 8265:localhost:8265 user@<head-node-ip>
546
+ ```
547
+
548
+ **Dashboard features**:
549
+ - Cluster utilization (CPU, GPU, memory)
550
+ - Running tasks and actors
551
+ - Object store usage
552
+ - Logs and errors
553
+
554
+ ### Cluster Logs
555
+
556
+ **View logs**:
557
+ ```bash
558
+ # Head node logs
559
+ tail -f /tmp/ray/session_latest/logs/monitor.log
560
+
561
+ # Worker node logs
562
+ tail -f /tmp/ray/session_latest/logs/raylet.log
563
+
564
+ # All logs
565
+ ray logs
566
+ ```
567
+
568
+ **Python logging**:
569
+ ```python
570
+ import logging
571
+
572
+ logger = logging.getLogger("ray")
573
+ logger.setLevel(logging.DEBUG)
574
+
575
+ # In training function
576
+ def train_func(config):
577
+ logger.info(f"Worker {ray.get_runtime_context().get_worker_id()} starting")
578
+ # Training...
579
+ ```
580
+
581
+ ## Best Practices
582
+
583
+ ### 1. Placement Strategies
584
+
585
+ ```python
586
+ # PACK: Pack workers on fewer nodes (better for communication)
587
+ ScalingConfig(num_workers=16, placement_strategy="PACK")
588
+
589
+ # SPREAD: Spread across nodes (better for fault tolerance)
590
+ ScalingConfig(num_workers=16, placement_strategy="SPREAD")
591
+
592
+ # STRICT_SPREAD: Exactly one worker per node
593
+ ScalingConfig(num_workers=4, placement_strategy="STRICT_SPREAD")
594
+ ```
595
+
596
+ ### 2. Resource Allocation
597
+
598
+ ```python
599
+ # Reserve resources per worker
600
+ ScalingConfig(
601
+ num_workers=8,
602
+ use_gpu=True,
603
+ resources_per_worker={"CPU": 8, "GPU": 1}, # Explicit allocation
604
+ trainer_resources={"CPU": 2} # Reserve for trainer
605
+ )
606
+ ```
607
+
608
+ ### 3. Fault Tolerance
609
+
610
+ ```python
611
+ from ray.train import RunConfig, FailureConfig
612
+
613
+ trainer = TorchTrainer(
614
+ train_func,
615
+ run_config=RunConfig(
616
+ failure_config=FailureConfig(
617
+ max_failures=3 # Retry up to 3 times on worker failure
618
+ )
619
+ )
620
+ )
621
+ ```
622
+
623
+ ## Resources
624
+
625
+ - Ray Cluster Launcher: https://docs.ray.io/en/latest/cluster/getting-started.html
626
+ - KubeRay: https://docs.ray.io/en/latest/cluster/kubernetes/index.html
627
+ - SLURM: https://docs.ray.io/en/latest/cluster/vms/user-guides/launching-clusters/slurm.html
628
+ - Autoscaling: https://docs.ray.io/en/latest/cluster/vms/user-guides/configuring-autoscaling.html