Buckets:
| import{s as ft,n as pt,o as ut}from"../chunks/scheduler.7b731bd4.js";import{S as bt,i as _t,e as c,s as n,c as i,h as wt,a as m,d as o,b as r,f as ct,g as l,j as D,k as mt,l as Tt,m as a,n as s,t as g,o as h,p as d}from"../chunks/index.cc268345.js";import{C as Lt,H as p,E as kt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.f0d99f98.js";function $t(nt){let f,A,x,H,u,z,b,V,_,rt="Community tutorials are made by active members of the Hugging Face community who want to share their knowledge and expertise with others. They are a great way to learn about the library and its features, and to get started with core classes and modalities.",E,w,j,T,B,L,it='<thead><tr><th>Task</th> <th>Class</th> <th>Description</th> <th>Author</th> <th>Tutorial</th> <th>Colab</th></tr></thead> <tbody><tr><td>Reinforcement Learning</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>Efficient Online Training with GRPO and vLLM in TRL</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/grpo_vllm_online_training" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/grpo_vllm_online_training.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Reinforcement Learning</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>Post training an LLM for reasoning with GRPO in TRL</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_llm_grpo_trl" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_llm_grpo_trl.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Reinforcement Learning</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>Mini-R1: Reproduce Deepseek R1 „aha moment“ a RL tutorial</td> <td><a href="https://huggingface.co/philschmid" rel="nofollow">Philipp Schmid</a></td> <td><a href="https://www.philschmid.de/mini-deepseek-r1" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/philschmid/deep-learning-pytorch-huggingface/blob/main/training/mini-deepseek-r1-aha-grpo.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Reinforcement Learning</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>RL on LLaMA 3.1-8B with GRPO and Unsloth optimizations</td> <td><a href="https://huggingface.co/AManzoni" rel="nofollow">Andrea Manzoni</a></td> <td><a href="https://colab.research.google.com/github/amanzoni1/fine_tuning/blob/main/RL_LLama3_1_8B_GRPO.ipynb" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/amanzoni1/fine_tuning/blob/main/RL_LLama3_1_8B_GRPO.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Instruction tuning</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>Fine-tuning Google Gemma LLMs using ChatML format with QLoRA</td> <td><a href="https://huggingface.co/philschmid" rel="nofollow">Philipp Schmid</a></td> <td><a href="https://www.philschmid.de/fine-tune-google-gemma" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/philschmid/deep-learning-pytorch-huggingface/blob/main/training/gemma-lora-example.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Structured Generation</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>Fine-tuning Llama-2-7B to generate Persian product catalogs in JSON using QLoRA and PEFT</td> <td><a href="https://huggingface.co/Mohammadreza" rel="nofollow">Mohammadreza Esmaeilian</a></td> <td><a href="https://huggingface.co/learn/cookbook/en/fine_tuning_llm_to_generate_persian_product_catalogs_in_json_format" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_llm_to_generate_persian_product_catalogs_in_json_format.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Preference Optimization</td> <td><a href="/docs/trl/pr_5607/en/bema_for_reference_model#trl.DPOTrainer">DPOTrainer</a></td> <td>Align Mistral-7b using Direct Preference Optimization for human preference alignment</td> <td><a href="https://huggingface.co/mlabonne" rel="nofollow">Maxime Labonne</a></td> <td><a href="https://mlabonne.github.io/blog/posts/Fine_tune_Mistral_7b_with_DPO.html" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/mlabonne/llm-course/blob/main/Fine_tune_a_Mistral_7b_model_with_DPO.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Preference Optimization</td> <td><a href="/docs/trl/pr_5607/en/orpo_trainer#trl.experimental.orpo.ORPOTrainer">experimental.orpo.ORPOTrainer</a></td> <td>Fine-tuning Llama 3 with ORPO combining instruction tuning and preference alignment</td> <td><a href="https://huggingface.co/mlabonne" rel="nofollow">Maxime Labonne</a></td> <td><a href="https://mlabonne.github.io/blog/posts/2024-04-19_Fine_tune_Llama_3_with_ORPO.html" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/drive/1eHNWg9gnaXErdAa8_mcvjMupbSS6rDvi" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Instruction tuning</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>How to fine-tune open LLMs in 2025 with Hugging Face</td> <td><a href="https://huggingface.co/philschmid" rel="nofollow">Philipp Schmid</a></td> <td><a href="https://www.philschmid.de/fine-tune-llms-in-2025" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/philschmid/deep-learning-pytorch-huggingface/blob/main/training/fine-tune-llms-in-2025.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Step-Level Reasoning</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>Supervised Reinforcement Learning (SRL) for step-by-step reasoning with vLLM</td> <td><a href="https://huggingface.co/s23deepak" rel="nofollow">Deepak Swaminathan</a></td> <td><a href="https://github.com/s23deepak/Supervised-Reinforcement-Learning" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/s23deepak/Supervised-Reinforcement-Learning/blob/main/notebooks/srl_grpo_tutorial.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr></tbody>',Q,k,q,$,lt='<thead><tr><th>Task</th> <th>Title</th> <th>Author</th> <th>Video</th></tr></thead> <tbody><tr><td>Instruction tuning</td> <td>Fine-tuning open AI models using Hugging Face TRL</td> <td><a href="https://huggingface.co/wietsevenema" rel="nofollow">Wietse Venema</a></td> <td><a href="https://youtu.be/cnGyyM0vOes" rel="nofollow"><img src="https://img.youtube.com/vi/cnGyyM0vOes/0.jpg"/></a></td></tr> <tr><td>Instruction tuning</td> <td>How to fine-tune a smol-LM with Hugging Face, TRL, and the smoltalk Dataset</td> <td><a href="https://huggingface.co/iammayur" rel="nofollow">Mayurji</a></td> <td><a href="https://youtu.be/jKdXv3BiLu0" rel="nofollow"><img src="https://img.youtube.com/vi/jKdXv3BiLu0/0.jpg"/></a></td></tr></tbody>',U,v,st='<summary>⚠️ Deprecated features notice for "How to fine-tune a smol-LM with Hugging Face, TRL, and the smoltalk Dataset" (click to expand)</summary> <blockquote class="warning"><p>The tutorial uses two deprecated features:</p> <ul><li><code>SFTTrainer(..., tokenizer=tokenizer)</code>: Use <code>SFTTrainer(..., processing_class=tokenizer)</code> instead, or simply omit it (it will be inferred from the model).</li> <li><code>setup_chat_format(model, tokenizer)</code>: Use <code>SFTConfig(..., chat_template_path="Qwen/Qwen3-0.6B")</code>, where <code>chat_template_path</code> specifies the model whose chat template you want to copy.</li></ul></blockquote>',N,O,W,P,X,y,gt='<thead><tr><th>Task</th> <th>Class</th> <th>Description</th> <th>Author</th> <th>Tutorial</th> <th>Colab</th></tr></thead> <tbody><tr><td>Visual QA</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>Fine-tuning Qwen2-VL-7B for visual question answering on ChartQA dataset</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_vlm_trl" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_vlm_trl.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Visual QA</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>Fine-tuning SmolVLM with TRL on a consumer GPU</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_smol_vlm_sft_trl" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_smol_vlm_sft_trl.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>SEO Description</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>Fine-tuning Qwen2-VL-7B for generating SEO-friendly descriptions from images</td> <td><a href="https://huggingface.co/philschmid" rel="nofollow">Philipp Schmid</a></td> <td><a href="https://www.philschmid.de/fine-tune-multimodal-llms-with-trl" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/philschmid/deep-learning-pytorch-huggingface/blob/main/training/fine-tune-multimodal-llms-with-trl.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Visual QA</td> <td><a href="/docs/trl/pr_5607/en/bema_for_reference_model#trl.DPOTrainer">DPOTrainer</a></td> <td>PaliGemma 🤝 Direct Preference Optimization</td> <td><a href="https://huggingface.co/merve" rel="nofollow">Merve Noyan</a></td> <td><a href="https://github.com/merveenoyan/smol-vision/blob/main/PaliGemma_DPO.ipynb" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/merveenoyan/smol-vision/blob/main/PaliGemma_DPO.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Visual QA</td> <td><a href="/docs/trl/pr_5607/en/bema_for_reference_model#trl.DPOTrainer">DPOTrainer</a></td> <td>Fine-tuning SmolVLM using direct preference optimization (DPO) with TRL on a consumer GPU</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_vlm_dpo_smolvlm_instruct" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_vlm_dpo_smolvlm_instruct.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Object Detection Grounding</td> <td><a href="/docs/trl/pr_5607/en/sft_trainer#trl.SFTTrainer">SFTTrainer</a></td> <td>Fine tuning a VLM for Object Detection Grounding using TRL</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_vlm_object_detection_grounding" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_vlm_object_detection_grounding.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Visual QA</td> <td><a href="/docs/trl/pr_5607/en/bema_for_reference_model#trl.DPOTrainer">DPOTrainer</a></td> <td>Fine-Tuning a Vision Language Model with TRL using MPO</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_vlm_mpo" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_vlm_mpo.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr> <tr><td>Reinforcement Learning</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>Post training a VLM for reasoning with GRPO using TRL</td> <td><a href="https://huggingface.co/sergiopaniego" rel="nofollow">Sergio Paniego</a></td> <td><a href="https://huggingface.co/learn/cookbook/fine_tuning_vlm_grpo_trl" rel="nofollow">Link</a></td> <td><a href="https://colab.research.google.com/github/huggingface/cookbook/blob/main/notebooks/en/fine_tuning_vlm_grpo_trl.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a></td></tr></tbody>',K,R,J,S,Z,M,ht='<thead><tr><th>Task</th> <th>Class</th> <th>Description</th> <th>Author</th> <th>Tutorial</th></tr></thead> <tbody><tr><td>Text-to-Speech</td> <td><a href="/docs/trl/pr_5607/en/gspo_token#trl.GRPOTrainer">GRPOTrainer</a></td> <td>Post training a Speech Language Model with GRPO using TRL</td> <td><a href="https://huggingface.co/Steveeeeeeen" rel="nofollow">Steven Zheng</a></td> <td><a href="https://huggingface.co/blog/Steveeeeeeen/llasa-grpo" rel="nofollow">Link</a></td></tr></tbody>',Y,C,tt,F,dt="If you have a tutorial that you would like to add to this list, please open a PR to add it. We will review it and merge it if it is relevant to the community.",et,G,ot,I,at;return u=new Lt({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),b=new p({props:{title:"Community Tutorials",local:"community-tutorials",headingTag:"h1"}}),w=new p({props:{title:"Language Models",local:"language-models",headingTag:"h2"}}),T=new p({props:{title:"Tutorials",local:"tutorials",headingTag:"h3"}}),k=new p({props:{title:"Videos",local:"videos",headingTag:"h3"}}),O=new p({props:{title:"Vision Language Models",local:"vision-language-models",headingTag:"h2"}}),P=new p({props:{title:"Tutorials",local:"tutorials",headingTag:"h3"}}),R=new p({props:{title:"Speech Language Models",local:"speech-language-models",headingTag:"h2"}}),S=new p({props:{title:"Tutorials",local:"tutorials",headingTag:"h3"}}),C=new p({props:{title:"Contributing",local:"contributing",headingTag:"h2"}}),G=new kt({props:{source:"https://github.com/huggingface/trl/blob/main/docs/source/community_tutorials.md"}}),{c(){f=c("meta"),A=n(),x=c("p"),H=n(),i(u.$$.fragment),z=n(),i(b.$$.fragment),V=n(),_=c("p"),_.textContent=rt,E=n(),i(w.$$.fragment),j=n(),i(T.$$.fragment),B=n(),L=c("table"),L.innerHTML=it,Q=n(),i(k.$$.fragment),q=n(),$=c("table"),$.innerHTML=lt,U=n(),v=c("details"),v.innerHTML=st,N=n(),i(O.$$.fragment),W=n(),i(P.$$.fragment),X=n(),y=c("table"),y.innerHTML=gt,K=n(),i(R.$$.fragment),J=n(),i(S.$$.fragment),Z=n(),M=c("table"),M.innerHTML=ht,Y=n(),i(C.$$.fragment),tt=n(),F=c("p"),F.textContent=dt,et=n(),i(G.$$.fragment),ot=n(),I=c("p"),this.h()},l(t){const e=wt("svelte-u9bgzb",document.head);f=m(e,"META",{name:!0,content:!0}),e.forEach(o),A=r(t),x=m(t,"P",{}),ct(x).forEach(o),H=r(t),l(u.$$.fragment,t),z=r(t),l(b.$$.fragment,t),V=r(t),_=m(t,"P",{"data-svelte-h":!0}),D(_)!=="svelte-10f5vz4"&&(_.textContent=rt),E=r(t),l(w.$$.fragment,t),j=r(t),l(T.$$.fragment,t),B=r(t),L=m(t,"TABLE",{"data-svelte-h":!0}),D(L)!=="svelte-636rw"&&(L.innerHTML=it),Q=r(t),l(k.$$.fragment,t),q=r(t),$=m(t,"TABLE",{"data-svelte-h":!0}),D($)!=="svelte-buf3gt"&&($.innerHTML=lt),U=r(t),v=m(t,"DETAILS",{"data-svelte-h":!0}),D(v)!=="svelte-1t15qc"&&(v.innerHTML=st),N=r(t),l(O.$$.fragment,t),W=r(t),l(P.$$.fragment,t),X=r(t),y=m(t,"TABLE",{"data-svelte-h":!0}),D(y)!=="svelte-12btm2r"&&(y.innerHTML=gt),K=r(t),l(R.$$.fragment,t),J=r(t),l(S.$$.fragment,t),Z=r(t),M=m(t,"TABLE",{"data-svelte-h":!0}),D(M)!=="svelte-k81hb6"&&(M.innerHTML=ht),Y=r(t),l(C.$$.fragment,t),tt=r(t),F=m(t,"P",{"data-svelte-h":!0}),D(F)!=="svelte-2rgict"&&(F.textContent=dt),et=r(t),l(G.$$.fragment,t),ot=r(t),I=m(t,"P",{}),ct(I).forEach(o),this.h()},h(){mt(f,"name","hf:doc:metadata"),mt(f,"content",vt)},m(t,e){Tt(document.head,f),a(t,A,e),a(t,x,e),a(t,H,e),s(u,t,e),a(t,z,e),s(b,t,e),a(t,V,e),a(t,_,e),a(t,E,e),s(w,t,e),a(t,j,e),s(T,t,e),a(t,B,e),a(t,L,e),a(t,Q,e),s(k,t,e),a(t,q,e),a(t,$,e),a(t,U,e),a(t,v,e),a(t,N,e),s(O,t,e),a(t,W,e),s(P,t,e),a(t,X,e),a(t,y,e),a(t,K,e),s(R,t,e),a(t,J,e),s(S,t,e),a(t,Z,e),a(t,M,e),a(t,Y,e),s(C,t,e),a(t,tt,e),a(t,F,e),a(t,et,e),s(G,t,e),a(t,ot,e),a(t,I,e),at=!0},p:pt,i(t){at||(g(u.$$.fragment,t),g(b.$$.fragment,t),g(w.$$.fragment,t),g(T.$$.fragment,t),g(k.$$.fragment,t),g(O.$$.fragment,t),g(P.$$.fragment,t),g(R.$$.fragment,t),g(S.$$.fragment,t),g(C.$$.fragment,t),g(G.$$.fragment,t),at=!0)},o(t){h(u.$$.fragment,t),h(b.$$.fragment,t),h(w.$$.fragment,t),h(T.$$.fragment,t),h(k.$$.fragment,t),h(O.$$.fragment,t),h(P.$$.fragment,t),h(R.$$.fragment,t),h(S.$$.fragment,t),h(C.$$.fragment,t),h(G.$$.fragment,t),at=!1},d(t){t&&(o(A),o(x),o(H),o(z),o(V),o(_),o(E),o(j),o(B),o(L),o(Q),o(q),o($),o(U),o(v),o(N),o(W),o(X),o(y),o(K),o(J),o(Z),o(M),o(Y),o(tt),o(F),o(et),o(ot),o(I)),o(f),d(u,t),d(b,t),d(w,t),d(T,t),d(k,t),d(O,t),d(P,t),d(R,t),d(S,t),d(C,t),d(G,t)}}}const vt='{"title":"Community Tutorials","local":"community-tutorials","sections":[{"title":"Language Models","local":"language-models","sections":[{"title":"Tutorials","local":"tutorials","sections":[],"depth":3},{"title":"Videos","local":"videos","sections":[],"depth":3}],"depth":2},{"title":"Vision Language Models","local":"vision-language-models","sections":[{"title":"Tutorials","local":"tutorials","sections":[],"depth":3}],"depth":2},{"title":"Speech Language Models","local":"speech-language-models","sections":[{"title":"Tutorials","local":"tutorials","sections":[],"depth":3}],"depth":2},{"title":"Contributing","local":"contributing","sections":[],"depth":2}],"depth":1}';function Ot(nt){return ut(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class St extends bt{constructor(f){super(),_t(this,f,Ot,$t,ft,{})}}export{St as component}; | |
Xet Storage Details
- Size:
- 19.3 kB
- Xet hash:
- decda31a3a1395f53a624db2cf703c3005b31bd5f8ad21e7e4bdeecf95bda6ad
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.