Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"Como contribuir para o Diffusers 🧨","local":"how-to-contribute-to-diffusers-","sections":[{"title":"Visão geral","local":"overview","sections":[{"title":"1. Fazer e responder perguntas nas Discussões do GitHub ou no Discord","local":"1-asking-and-answering-questions-on-github-discussions-or-on-discord","sections":[],"depth":3},{"title":"2. Abrindo novas issues na aba de issues do GitHub","local":"2-opening-new-issues-on-the-github-issues-tab","sections":[{"title":"2.1. Relatórios de bugs reproduzíveis e mínimos","local":"21-reproducible-minimal-bug-reports","sections":[],"depth":4},{"title":"2.2. Solicitações de recursos","local":"22-feature-requests","sections":[],"depth":4},{"title":"2.3 Feedback","local":"23-feedback","sections":[],"depth":4},{"title":"2.4 Perguntas técnicas","local":"24-technical-questions","sections":[],"depth":4},{"title":"2.5 Proposta para adicionar um novo modelo, agendador ou pipeline","local":"25-proposal-to-add-a-new-model-scheduler-or-pipeline","sections":[],"depth":4}],"depth":3},{"title":"3. Resolvendo problemas na aba de problemas do GitHub","local":"3-answering-issues-on-the-github-issues-tab","sections":[],"depth":3},{"title":"4. Corrigindo um “Good first issue”","local":"4-fixing-a-good-first-issue","sections":[],"depth":3},{"title":"5. Contribuir para a documentação","local":"5-contribute-to-the-documentation","sections":[],"depth":3},{"title":"6. Publique um pipeline ou modelo no Hub","local":"6-publish-a-pipeline-or-model-on-the-hub","sections":[],"depth":3},{"title":"7. Contribuir com exemplos de treinamento","local":"7-contribute-to-training-examples","sections":[],"depth":3},{"title":"8. Corrigindo um “Good second issue”","local":"8-fixing-a-good-second-issue","sections":[],"depth":3},{"title":"9. Assumendo uma questão de MVP do Diffusers","local":"9-taking-on-a-diffusers-mvp-issue","sections":[],"depth":3},{"title":"10. Adicionando pipelines, modelos e agendadores","local":"10-adding-pipelines-models-schedulers","sections":[{"title":"Quando o suporte a um novo modelo ou pipeline é lançado","local":"when-new-model-or-pipeline-support-is-released","sections":[],"depth":4},{"title":"Copiado de mechanism","local":"copied-from-mechanism","sections":[],"depth":4}],"depth":3}],"depth":2},{"title":"Como escrever um bom problema","local":"how-to-write-a-good-issue","sections":[],"depth":2},{"title":"Como escrever um bom PR","local":"how-to-write-a-good-pr","sections":[],"depth":2},{"title":"Como abrir um PR","local":"how-to-open-a-pr","sections":[{"title":"Testes","local":"tests","sections":[],"depth":3},{"title":"Sincronizando o main do fork com o main upstream (HuggingFace)","local":"syncing-forked-main-with-upstream-huggingface-main","sections":[],"depth":3},{"title":"Guia de estilo","local":"style-guide","sections":[],"depth":3}],"depth":2},{"title":"Programando com agentes de IA","local":"coding-with-ai-agents","sections":[{"title":"Contribuições assistidas por IA e agênticas","local":"ai-assisted-and-agentic-contributions","sections":[],"depth":3}],"depth":2}],"depth":1}"/> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/entry/start.1gaXe03k.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/BObs6oQO.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/DPnyVmXs.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/entry/app.BwdYRbCn.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/DSGUT_OW.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/C045MWWx.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/6tuJ3nyi.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/nodes/0.CornNeQR.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/IaDvMxLQ.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/nodes/304.D7A4xAiG.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/chunks/bKdwVYpU.js" rel="modulepreload"> | |
| <!--110sasa--><meta name="hf:doc:metadata" content="{"title":"How to contribute to Diffusers 🧨","local":"how-to-contribute-to-diffusers-","sections":[{"title":"Overview","local":"overview","sections":[{"title":"1. Asking and answering questions on GitHub Discussions or on Discord","local":"1-asking-and-answering-questions-on-github-discussions-or-on-discord","sections":[],"depth":3},{"title":"2. Opening new issues on the GitHub issues tab","local":"2-opening-new-issues-on-the-github-issues-tab","sections":[{"title":"2.1. Reproducible, minimal bug reports","local":"21-reproducible-minimal-bug-reports","sections":[],"depth":4},{"title":"2.2. Feature requests","local":"22-feature-requests","sections":[],"depth":4},{"title":"2.3 Feedback","local":"23-feedback","sections":[],"depth":4},{"title":"2.4 Technical questions","local":"24-technical-questions","sections":[],"depth":4},{"title":"2.5 Proposal to add a new model, scheduler, or pipeline","local":"25-proposal-to-add-a-new-model-scheduler-or-pipeline","sections":[],"depth":4}],"depth":3},{"title":"3. Answering issues on the GitHub issues tab","local":"3-answering-issues-on-the-github-issues-tab","sections":[],"depth":3},{"title":"4. Fixing a “Good first issue”","local":"4-fixing-a-good-first-issue","sections":[],"depth":3},{"title":"5. Contribute to the documentation","local":"5-contribute-to-the-documentation","sections":[],"depth":3},{"title":"6. Publish a pipeline or model on the Hub","local":"6-publish-a-pipeline-or-model-on-the-hub","sections":[],"depth":3},{"title":"7. Contribute to training examples","local":"7-contribute-to-training-examples","sections":[],"depth":3},{"title":"8. Fixing a “Good second issue”","local":"8-fixing-a-good-second-issue","sections":[],"depth":3},{"title":"9. Taking on a Diffusers MVP issue","local":"9-taking-on-a-diffusers-mvp-issue","sections":[],"depth":3},{"title":"10. Adding pipelines, models, schedulers","local":"10-adding-pipelines-models-schedulers","sections":[{"title":"When new model or pipeline support is released","local":"when-new-model-or-pipeline-support-is-released","sections":[],"depth":4},{"title":"Copied from mechanism","local":"copied-from-mechanism","sections":[],"depth":4}],"depth":3}],"depth":2},{"title":"How to write a good issue","local":"how-to-write-a-good-issue","sections":[],"depth":2},{"title":"How to write a good PR","local":"how-to-write-a-good-pr","sections":[],"depth":2},{"title":"How to open a PR","local":"how-to-open-a-pr","sections":[{"title":"Tests","local":"tests","sections":[],"depth":3},{"title":"Syncing forked main with upstream (HuggingFace) main","local":"syncing-forked-main-with-upstream-huggingface-main","sections":[],"depth":3},{"title":"Style guide","local":"style-guide","sections":[],"depth":3}],"depth":2},{"title":"Coding with AI agents","local":"coding-with-ai-agents","sections":[{"title":"AI-assisted and agentic contributions","local":"ai-assisted-and-agentic-contributions","sections":[],"depth":3}],"depth":2}],"depth":1}"/><!----> | |
| <link href="/docs/diffusers/v0.43.0/en/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"><div dir="ltr" class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----></span> <span dir="auto">Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="how-to-contribute-to-diffusers-" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#how-to-contribute-to-diffusers-"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Como contribuir para o Diffusers 🧨<!----></span></h1><!--]--><!----> <blockquote class="tip"><p>Se você usar um agente de IA para contribuir, certifique-se de ler a seção <a href="#ai-assisted-and-agentic-contributions">Contribuições assistidas por IA e agênticas</a> para conhecer nossas expectativas e diretrizes.</p></blockquote> <p>Nós ❤️ contribuições da comunidade de código aberto! Todos são bem-vindos, e todos os tipos de participação –não apenas código– são valorizados e apreciados. Responder perguntas, ajudar outros, se comunicar e melhorar a documentação são todos imensamente valiosos para a comunidade, então não tenha medo e envolva-se se você estiver disposto!</p> <p>Todos são convidados a começar dizendo 👋 em nosso canal público do Discord. Discutimos as últimas tendências em modelos de difusão, fazemos perguntas, mostramos projetos pessoais, nos ajudamos com contribuições ou apenas conversamos ☕. <a href="https://Discord.gg/G7tWnz98XR"><img alt="Join us on Discord" src="https://img.shields.io/discord/823813159592001537?color=5865F2&logo=discord&logoColor=white"/></a></p> <p>Independentemente da forma como você escolher contribuir, nos esforçamos para fazer parte de uma comunidade aberta, acolhedora e gentil. Por favor, leia nosso <a href="https://github.com/huggingface/diffusers/blob/main/CODE_OF_CONDUCT.md" rel="nofollow">código de conduta</a> e tenha o cuidado de respeitá-lo durante suas interações. Também recomendamos que você se familiarize com as <a href="https://huggingface.co/docs/diffusers/conceptual/ethical_guidelines" rel="nofollow">diretrizes éticas</a> que orientam nosso projeto e pedimos que você siga os mesmos princípios de transparência e responsabilidade.</p> <p>Valorizamos enormemente o feedback da comunidade, então não tenha medo de se manifestar se você acredita ter um feedback valioso que possa ajudar a melhorar a biblioteca - toda mensagem, comentário, issue e pull request (PR) é lida e considerada.</p> <!--[1--><h2 class="relative group"><a id="overview" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#overview"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Visão geral<!----></span></h2><!--]--><!----> <p>Você pode contribuir de muitas formas, desde responder perguntas em issues e discussões até adicionar novos modelos de difusão à biblioteca principal.</p> <p>A seguir, apresentamos uma visão geral das diferentes formas de contribuir, classificadas pelo tempo de dedicação necessário, em ordem crescente. Todas elas são valiosas para a comunidade.</p> <ul><li><ol><li>Fazer e responder perguntas no <a href="https://github.com/huggingface/diffusers/discussions" rel="nofollow">GitHub Discussions</a> ou no <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>.</li></ol></li> <li><ol start="2"><li>Abrindo novas questões na <a href="https://github.com/huggingface/diffusers/issues/new/choose" rel="nofollow">aba GitHub Issues</a>.</li></ol></li> <li><ol start="3"><li>Resolvendo problemas na <a href="https://github.com/huggingface/diffusers/issues" rel="nofollow">aba de Issues do GitHub</a>.</li></ol></li> <li><ol start="4"><li>Corrija um problema simples, marcado com o rótulo “Good first issue”, veja <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="nofollow">aqui</a>.</li></ol></li> <li><ol start="5"><li>Contribua para a <a href="https://github.com/huggingface/diffusers/tree/main/docs/source" rel="nofollow">documentação</a>.</li></ol></li> <li><ol start="6"><li>Publique um pipeline ou modelo no Hub como código remoto com <a href="../modular_diffusers/overview">Modular Diffusers</a>.</li></ol></li> <li><ol start="7"><li>Contribua para os <a href="https://github.com/huggingface/diffusers/tree/main/examples" rel="nofollow">exemplos</a>.</li></ol></li> <li><ol start="8"><li>Corrija um problema mais difícil, marcado com o rótulo “Good second issue”, veja <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+second+issue%22" rel="nofollow">aqui</a>.</li></ol></li> <li><ol start="9"><li>Assuma uma issue do <a href="https://github.com/huggingface/diffusers/issues/12635" rel="nofollow">programa MVP do Diffusers</a>.</li></ol></li> <li><ol start="10"><li>Adicione um novo pipeline, modelo ou scheduler à biblioteca. Para essa contribuição, geralmente trabalhamos diretamente com os autores do modelo; como contribuidor da comunidade, comece no Hub (6) em vez disso. Consulte as issues abertas <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+pipeline%2Fmodel%22" rel="nofollow">“New Pipeline/Model”</a> e <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+scheduler%22" rel="nofollow">“New scheduler”</a> e leia a <a href="https://huggingface.co/docs/diffusers/main/en/conceptual/philosophy" rel="nofollow">Design Philosophy</a> primeiro.</li></ol></li></ul> <p>Como dito anteriormente, <strong>todas as contribuições são valiosas para a comunidade</strong>. | |
| A seguir, explicaremos cada contribuição com um pouco mais de detalhe.</p> <p>Para as contribuições 4 a 10, exceto a 6, que está no Hub, você precisará abrir um PR. O processo é explicado em detalhes em <a href="#how-to-open-a-pr">Abertura de um pull request</a>.</p> <!--[2--><h3 class="relative group"><a id="1-asking-and-answering-questions-on-github-discussions-or-on-discord" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#1-asking-and-answering-questions-on-github-discussions-or-on-discord"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->1. Fazer e responder perguntas nas Discussões do GitHub ou no Discord<!----></span></h3><!--]--><!----> <p>Qualquer dúvida ou comentário relacionado à biblioteca Diffusers pode ser feito em <a href="https://github.com/huggingface/diffusers/discussions" rel="nofollow">GitHub Discussions</a> ou no <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>. Tais dúvidas e comentários incluem (mas não se limitam a):</p> <ul><li>Relatos de experimentos de treinamento ou inferência com o objetivo de compartilhar conhecimento</li> <li>Apresentação de projetos pessoais</li> <li>Perguntas sobre exemplos de treinamento não oficiais</li> <li>Propostas de projeto</li> <li>Feedback geral</li> <li>Resumos de artigos</li> <li>Pedir ajuda em projetos pessoais que são construídos sobre a biblioteca Diffusers</li> <li>Perguntas gerais</li> <li>Questões éticas sobre modelos de difusão</li> <li>…</li></ul> <p>Toda pergunta feita nas GitHub Discussions ou no Discord incentiva ativamente a comunidade a compartilhar conhecimento publicamente e pode muito bem ajudar um iniciante no futuro que tenha a mesma dúvida que você está tendo. Por favor, faça todas as perguntas que você tiver. | |
| No mesmo espírito, você ajuda imensamente a comunidade ao responder a essas perguntas, pois dessa forma você está documentando publicamente o conhecimento para que todos possam aprender.</p> <p><strong>Por favor</strong>, tenha em mente que quanto mais esforço você dedicar ao fazer ou responder a uma pergunta, maior será a qualidade do conhecimento documentado publicamente. Da mesma forma, perguntas bem formuladas e bem respondidas criam um banco de dados de conhecimento de alta qualidade acessível a todos, enquanto perguntas ou respostas mal formuladas reduzem a qualidade geral do banco de dados de conhecimento público. | |
| Em resumo, uma pergunta ou resposta de alta qualidade é <em>precisa</em>, <em>concisa</em>, <em>relevante</em>, <em>fácil de entender</em>, <em>acessível</em> e <em>bem formatada/bem formulada</em>. Para mais informações, consulte a seção <a href="#how-to-write-a-good-issue">Como escrever um bom issue</a>.</p> <p><strong>OBSERVAÇÃO sobre canais</strong>: <a href="https://github.com/huggingface/diffusers/discussions" rel="nofollow"><em>GitHub Discussions</em></a> é indexado por mecanismos de busca e cada tópico pode ser vinculado, portanto, perguntas e respostas postadas ali permanecem encontráveis para a próxima pessoa com o mesmo problema. | |
| Em contraste, o <em>Discord</em> tem um formato de chat que convida a uma comunicação rápida e direta. | |
| Embora seja provável que você receba uma resposta para sua pergunta mais rapidamente no Discord, sua | |
| pergunta não será mais visível com o passar do tempo, e é muito mais difícil encontrar informações postadas há algum tempo. Por isso, recomendamos o GitHub Discussions para perguntas e respostas destinadas a durar. Se uma conversa no Discord levar a uma conclusão interessante, poste o resultado como uma discussão para que leitores futuros possam encontrá-lo.</p> <!--[2--><h3 class="relative group"><a id="2-opening-new-issues-on-the-github-issues-tab" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#2-opening-new-issues-on-the-github-issues-tab"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->2. Abrindo novas issues na aba de issues do GitHub<!----></span></h3><!--]--><!----> <p>A biblioteca 🧨 Diffusers é robusta e confiável graças aos usuários que nos notificam sobre os problemas que encontram. Então, obrigado por reportar um problema.</p> <p>Lembre-se de que as issues do GitHub são reservadas para perguntas técnicas diretamente relacionadas à biblioteca Diffusers, relatórios de bugs, solicitações de recursos ou feedback sobre o design da biblioteca.</p> <p>Em resumo, isso significa que tudo que <strong>não</strong> está relacionado ao <strong>código da biblioteca Diffusers</strong> (incluindo a documentação) não deve <strong>ser</strong> solicitado como uma issue, mas sim em <a href="https://github.com/huggingface/diffusers/discussions" rel="nofollow">GitHub Discussions</a> ou <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>.</p> <p><strong>Considere as seguintes diretrizes ao abrir uma nova issue</strong>:</p> <ul><li>Certifique-se de que você já pesquisou se o seu problema já foi questionado antes (use a barra de pesquisa no GitHub em Issues).</li> <li>Nunca relate um novo problema em outro problema (relacionado). Se outro problema for altamente relacionado, abra um novo problema mesmo assim e faça um link para o problema relacionado.</li> <li>Certifique-se de que seu problema esteja escrito em inglês.</li> <li>Verifique se o seu problema pode ser resolvido atualizando para a versão mais recente do Diffusers. Antes de postar o seu problema, certifique-se de que <code>python -c "import diffusers; print(diffusers.__version__)"</code> é maior ou corresponde à versão mais recente do Diffusers.</li> <li>Lembre-se de que quanto mais esforço você dedicar ao abrir uma nova issue, maior será a qualidade da sua resposta e melhor será a qualidade geral das issues do Diffusers.</li></ul> <p>Novos problemas geralmente incluem o seguinte.</p> <!--[3--><h4 class="relative group"><a id="21-reproducible-minimal-bug-reports" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#21-reproducible-minimal-bug-reports"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->2.1. Relatórios de bugs reproduzíveis e mínimos<!----></span></h4><!--]--><!----> <p>Um relatório de bug deve sempre ter um trecho de código reproduzível e ser o mais mínimo e conciso possível. | |
| Isso significa, em mais detalhes:</p> <ul><li>Reduza o escopo do bug o máximo possível, <strong>não envie o arquivo de código inteiro</strong>.</li> <li>Formate seu código.</li> <li>Não inclua nenhuma biblioteca externa, exceto Diffusers, dependendo delas.</li> <li><strong>Sempre</strong> forneça todas as informações necessárias sobre o seu ambiente; para isso, você pode executar <code>diffusers-cli env</code> no seu shell e copiar e colar as informações exibidas na issue.</li> <li>Explique o problema. Se o leitor não souber qual é o problema e por que ele é um problema, (ele/ela) não poderá resolvê-lo.</li> <li><strong>Sempre</strong> certifique-se de que o leitor possa reproduzir seu problema com o mínimo de esforço possível. Se seu trecho de código não puder ser executado devido a bibliotecas ausentes ou variáveis indefinidas, o leitor não poderá ajudá-lo. Certifique-se de que seu trecho de código reproduzível seja o mais mínimo possível e possa ser copiado e colado em um shell Python simples.</li> <li>Se, para reproduzir o seu problema, for necessário um modelo e/ou um conjunto de dados, certifique-se de que o leitor tem acesso a esse modelo ou conjunto de dados. Você sempre pode enviar o seu modelo ou conjunto de dados para o <a href="https://huggingface.co" rel="nofollow">Hub</a> para facilitar o download. Tente manter o seu modelo e conjunto de dados o menor possível, para tornar a reprodução do seu problema o mais simples possível.</li></ul> <p>Para mais informações, consulte a seção <a href="#how-to-write-a-good-issue">Como escrever um bom problema</a>.</p> <p>Você pode abrir um relatório de bug <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=bug&projects=&template=bug-report.yml" rel="nofollow">aqui</a>.</p> <!--[3--><h4 class="relative group"><a id="22-feature-requests" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#22-feature-requests"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->2.2. Solicitações de recursos<!----></span></h4><!--]--><!----> <p>Uma solicitação de recurso de primeira classe aborda os seguintes pontos:</p> <ol><li>Primeiro, a motivação:</li></ol> <ul><li>Isso está relacionado a um problema/frustração com a biblioteca? Se sim, por favor, explique o porquê. O ideal é fornecer um trecho de código que demonstre o problema.</li> <li>Isso está relacionado a algo de que você precisaria para um projeto? Adoraríamos saber mais!</li> <li>É algo em que você trabalhou e que acredita que pode beneficiar a comunidade? | |
| Excelente! Conte-nos qual problema ele resolveu para você.</li></ul> <ol start="2"><li>Escreva um <em>parágrafo completo</em> descrevendo o recurso;</li> <li>Forneça um <strong>trecho de código</strong> que demonstre seu uso futuro;</li> <li>Caso isso esteja relacionado a um artigo, por favor, anexe um link;</li> <li>Anexe quaisquer informações adicionais (desenhos, capturas de tela, etc.) que você ache que possam ajudar.</li></ol> <p>Você pode abrir uma solicitação de recurso <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feature_request.md&title=" rel="nofollow">aqui</a>.</p> <!--[3--><h4 class="relative group"><a id="23-feedback" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#23-feedback"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->2.3 Feedback<!----></span></h4><!--]--><!----> <p>Feedback sobre o design da biblioteca e por que ele é bom ou não ajuda imensamente os mantenedores principais a construir uma biblioteca amigável ao usuário. Para entender a filosofia por trás da filosofia de design atual, por favor, dê uma olhada <a href="https://huggingface.co/docs/diffusers/conceptual/philosophy" rel="nofollow">aqui</a>. Se você sentir que uma certa escolha de design não se encaixa na filosofia de design atual, explique por quê e como ela deveria ser alterada. Se uma certa escolha de design segue a filosofia de design demais, restringindo assim casos de uso, explique por quê e como ela deveria ser alterada. | |
| Se uma certa escolha de design é muito útil para você, deixe também uma nota, pois esse é um ótimo feedback para futuras decisões de design.</p> <p>Você pode abrir uma questão sobre o feedback <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feedback.md&title=" rel="nofollow">aqui</a>.</p> <!--[3--><h4 class="relative group"><a id="24-technical-questions" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#24-technical-questions"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->2.4 Perguntas técnicas<!----></span></h4><!--]--><!----> <p>As perguntas técnicas são principalmente sobre por que determinado código da biblioteca foi escrito de uma certa maneira, ou o que uma certa parte do código faz. Por favor, certifique-se de fazer um link para o código em questão e forneça detalhes sobre | |
| por que essa parte do código é difícil de entender.</p> <p>Você pode abrir uma issue sobre uma questão técnica <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=bug&template=bug-report.yml" rel="nofollow">aqui</a>.</p> <!--[3--><h4 class="relative group"><a id="25-proposal-to-add-a-new-model-scheduler-or-pipeline" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#25-proposal-to-add-a-new-model-scheduler-or-pipeline"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->2.5 Proposta para adicionar um novo modelo, agendador ou pipeline<!----></span></h4><!--]--><!----> <p>Se a comunidade de modelos de difusão lançou um novo modelo, pipeline ou scheduler que você gostaria de ver na biblioteca Diffusers, por favor, forneça as seguintes informações:</p> <ul><li>Breve descrição do pipeline de difusão, modelo ou agendador e link para o artigo ou lançamento público.</li> <li>Link para qualquer uma de suas implementações de código aberto.</li> <li>Link para os pesos do modelo, caso estejam disponíveis.</li></ul> <p>Além disso, não se esqueça de marcar o autor original do componente (modelo, agendador, pipeline, etc.) pelo handle do GitHub, se você conseguir encontrá-lo.</p> <p>Se você quiser trazer o modelo para o Diffusers por conta própria, consulte <a href="#6-publish-a-pipeline-or-model-on-the-hub">Publicar um pipeline ou modelo no Hub</a> e <a href="#10-adding-pipelines-models-schedulers">Adicionar pipelines, modelos, agendadores</a>.</p> <p>Você pode abrir uma solicitação para um modelo/pipeline/agendador <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=New+model%2Fpipeline%2Fscheduler&template=new-model-addition.yml" rel="nofollow">aqui</a>.</p> <!--[2--><h3 class="relative group"><a id="3-answering-issues-on-the-github-issues-tab" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#3-answering-issues-on-the-github-issues-tab"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->3. Resolvendo problemas na aba de problemas do GitHub<!----></span></h3><!--]--><!----> <p>Responder a problemas no GitHub pode exigir algum conhecimento técnico de Diffusers, mas incentivamos todos a tentarem, mesmo que você não tenha 100% de certeza de que sua resposta está correta. | |
| Algumas dicas para dar uma resposta de alta qualidade a um problema:</p> <ul><li>Seja o mais conciso e minimalista possível.</li> <li>Mantenha o foco no assunto. A resposta ao problema deve tratar apenas do problema em questão.</li> <li>Forneça links para códigos, artigos ou outras fontes que comprovem ou incentivem seu ponto.</li> <li>Responda em código. Se um simples trecho de código for a resposta para o problema ou mostrar como o problema pode ser resolvido, forneça um trecho de código totalmente reproduzível.</li></ul> <p>Além disso, muitos problemas tendem a ser simplesmente fora do tópico, duplicados de outros problemas ou irrelevantes. É de grande ajuda para os mantenedores se você puder responder a esses problemas, incentivando o autor do problema a ser mais preciso, fornecer o link para um problema duplicado ou redirecioná-los para <a href="https://github.com/huggingface/diffusers/discussions" rel="nofollow">GitHub Discussions</a> ou <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>.</p> <p>Se você verificou que o relatório de bug emitido está correto e requer uma correção no código-fonte, | |
| por favor, consulte as seções a seguir.</p> <p>Para todas as contribuições, exceto <a href="#6-publish-a-pipeline-or-model-on-the-hub">6</a>, você precisa abrir um PR. A seção <a href="https://github.com/huggingface/diffusers/pull/15179/changes#how-to-open-a-pr" rel="nofollow">Abertura de um pull request</a> explica como fazer isso.</p> <!--[2--><h3 class="relative group"><a id="4-fixing-a-good-first-issue" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#4-fixing-a-good-first-issue"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->4. Corrigindo um “Good first issue”<!----></span></h3><!--]--><!----> <p><em>Boas primeiras questões</em> são marcadas pelo rótulo <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="nofollow">Good first issue</a>. Geralmente, a questão já explica como uma possível solução deve ser para facilitar a correção. | |
| Se a questão não tiver sido fechada e você quiser tentar corrigi-la, basta deixar a mensagem “I would like to try this issue.”. Geralmente, há três cenários:</p> <ul><li>a.) A descrição do problema já propõe uma correção. Nesse caso, e se a solução fizer sentido para você, você pode abrir um PR ou um PR em rascunho para corrigi-lo.</li> <li>b.) A descrição da issue não propõe uma correção. Nesse caso, proponha uma correção você mesmo em um comentário na issue. Algumas frases descrevendo a abordagem são suficientes. Aguarde a confirmação de alguém da equipe do Diffusers antes de abrir um PR.</li> <li>c.) Já existe um PR aberto para corrigir o problema, mas o problema ainda não foi fechado. Se o PR ficou obsoleto, você pode simplesmente abrir um novo PR e fazer um link para o PR obsoleto. PRs frequentemente ficam obsoletos se o contribuidor original que queria corrigir o problema de repente não consegue mais encontrar tempo para prosseguir. Isso frequentemente acontece em código aberto e é muito normal. Nesse caso, a comunidade ficará muito feliz se você der uma nova tentativa e aproveitar o conhecimento do PR existente. Se já existe um PR e ele está ativo, você pode ajudar o autor dando sugestões, revisando o PR ou até mesmo perguntando se pode contribuir para o PR.</li></ul> <!--[2--><h3 class="relative group"><a id="5-contribute-to-the-documentation" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#5-contribute-to-the-documentation"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->5. Contribuir para a documentação<!----></span></h3><!--]--><!----> <p>Uma boa biblioteca <strong>sempre</strong> tem uma boa documentação! A documentação oficial costuma ser um dos primeiros pontos de contato para novos usuários da biblioteca, e, portanto, contribuir para a documentação é uma <strong>contribuição de alto valor</strong>.</p> <p>Contribuir para a biblioteca pode assumir muitas formas:</p> <ul><li>Corrigindo erros de ortografia ou gramática.</li> <li>Corrija a formatação incorreta do docstring. Se você notar que a documentação oficial está sendo exibida de forma estranha ou que um link está quebrado, ficaremos muito felizes se você dedicar um tempo para corrigi-lo.</li> <li>Corrija a forma ou as dimensões de um tensor de entrada ou saída na docstring.</li> <li>Esclarecer a documentação que é difícil de entender ou incorreta.</li> <li>Atualize exemplos de código desatualizados.</li> <li>Traduzindo a documentação para outro idioma.</li></ul> <p>Tudo que é exibido em <a href="https://huggingface.co/docs/diffusers/index" rel="nofollow">a página oficial da documentação do Diffusers</a> faz parte da documentação oficial e pode ser corrigido ou ajustado na <a href="https://github.com/huggingface/diffusers/tree/main/docs/source" rel="nofollow">fonte da documentação</a> respectiva.</p> <p>Por favor, dê uma olhada em <a href="https://github.com/huggingface/diffusers/tree/main/docs" rel="nofollow">esta página</a> sobre como verificar as alterações feitas na documentação localmente.</p> <!--[2--><h3 class="relative group"><a id="6-publish-a-pipeline-or-model-on-the-hub" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#6-publish-a-pipeline-or-model-on-the-hub"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->6. Publique um pipeline ou modelo no Hub<!----></span></h3><!--]--><!----> <p>Com o <a href="../modular_diffusers/overview">Modular Diffusers</a>, um pipeline pode existir como código remoto em qualquer repositório do Hub. Qualquer pessoa pode carregá-lo com <code>from_pretrained(..., trust_remote_code=True)</code>, sem esperar por uma liberação do Diffusers. Se você é um contribuidor da comunidade trazendo um novo pipeline ou modelo, comece aqui. Veja custom blocks para publicar um pipeline e custom models para publicar um modelo.</p> <p>Informe-nos na <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=New+model%2Fpipeline%2Fscheduler&template=new-model-addition.yml" rel="nofollow">solicitação de modelo</a> correspondente (abra uma se não houver): fornecemos feedback sobre a implementação e destacamos as que gostamos em nossa coleção <a href="https://huggingface.co/collections/diffusers-modular/community-modular-diffusers-blocks" rel="nofollow">Community Modular Diffusers Blocks</a>. A partir disso, decidimos como suportar o modelo na biblioteca: podemos incorporar sua versão, trabalhar com os autores em uma versão oficial ou simplesmente direcionar as pessoas para a sua. Informe-nos também onde encontrou dificuldades ao longo do caminho: APIs confusas, documentação ausente, bugs. Esse feedback é tão valioso para nós quanto o pipeline.</p> <!--[2--><h3 class="relative group"><a id="7-contribute-to-training-examples" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#7-contribute-to-training-examples"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->7. Contribuir com exemplos de treinamento<!----></span></h3><!--]--><!----> <p>Os exemplos do Diffusers são uma coleção de scripts de treinamento que residem em <a href="https://github.com/huggingface/diffusers/tree/main/examples" rel="nofollow">examples</a>.</p> <p>Suportamos dois tipos de exemplos de treinamento:</p> <ul><li>Exemplos oficiais de treinamento</li> <li>Exemplos de treinamento de pesquisa</li></ul> <p>Os exemplos de treinamento de pesquisa estão localizados em <a href="https://github.com/huggingface/diffusers/tree/main/examples/research_projects" rel="nofollow">examples/research_projects</a>, enquanto os exemplos de treinamento oficiais incluem todas as pastas sob <a href="https://github.com/huggingface/diffusers/tree/main/examples" rel="nofollow">examples</a>, exceto as pastas <code>research_projects</code> e <code>community</code>. | |
| Os exemplos de treinamento oficiais são mantidos pelos mantenedores principais do Diffusers, enquanto os exemplos de treinamento de pesquisa são mantidos pela comunidade. | |
| Isso ocorre pelo mesmo motivo pelo qual a biblioteca mantém um conjunto pequeno de pipelines oficiais e pipelines da comunidade ativos no Hub: não é viável para os mantenedores principais manter todos os possíveis métodos de treinamento para modelos de difusão. | |
| Se os mantenedores principais do Diffusers e a comunidade considerarem um determinado paradigma de treinamento muito experimental ou não popular o suficiente, o código de treinamento correspondente deve ser colocado na pasta <code>research_projects</code> e mantido pelo autor.</p> <p>Tanto os exemplos oficiais de treinamento quanto os de pesquisa consistem em um diretório que contém um ou mais scripts de treinamento, um arquivo <code>requirements.txt</code> e um arquivo <code>README.md</code>. Para que o usuário possa fazer uso dos exemplos de treinamento, é necessário clonar o repositório:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->git <span class="hljs-built_in">clone</span> https://github.com/huggingface/diffusers<!----></pre></div><!----> <p>bem como para instalar todas as dependências adicionais necessárias para o treinamento:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!----><span class="hljs-built_in">cd</span> diffusers | |
| pip install -r examples/<your-example-folder>/requirements.txt<!----></pre></div><!----> <p>Portanto, ao adicionar um exemplo, o arquivo <code>requirements.txt</code> deve definir todas as dependências do pip necessárias para o seu exemplo de treinamento, de modo que, uma vez que todas sejam instaladas, o usuário possa executar o script de treinamento do exemplo. Veja, por exemplo, o <a href="https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/requirements.txt" rel="nofollow">arquivo <code>requirements.txt</code> do DreamBooth</a>.</p> <p>Os exemplos de treinamento da biblioteca Diffusers devem seguir a seguinte filosofia:</p> <ul><li>Todo o código necessário para executar os exemplos deve estar em um único arquivo Python.</li> <li>Deve ser possível executar o exemplo pela linha de comando com <code>python <your-example>.py --args</code>.</li> <li>Os exemplos devem ser mantidos simples e servir como <strong>um exemplo</strong> de como usar o Diffusers para treinamento. O objetivo dos scripts de exemplo é <strong>não</strong> criar modelos de difusão de última geração, mas sim reproduzir esquemas de treinamento conhecidos sem adicionar muita lógica personalizada. Como consequência desse ponto, nossos exemplos também buscam servir como bons materiais educacionais.</li></ul> <p>Para contribuir com um exemplo, é altamente recomendável consultar exemplos já existentes, como <a href="https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/train_dreambooth.py" rel="nofollow">dreambooth</a>, para ter uma ideia de como eles devem ser estruturados. | |
| Recomendamos fortemente que os colaboradores utilizem a <a href="https://github.com/huggingface/accelerate" rel="nofollow">Accelerate library</a>, pois ela está profundamente integrada | |
| ao Diffusers. | |
| Quando um script de exemplo estiver funcionando, certifique-se de adicionar um <code>README.md</code> abrangente que descreva exatamente como usar o exemplo. Este README deve incluir:</p> <ul><li>Um exemplo de comando para executar o script de exemplo mostrado <a href="https://github.com/huggingface/diffusers/tree/main/examples/dreambooth#running-locally-with-pytorch" rel="nofollow">aqui</a>.</li> <li>Um link para alguns resultados de treinamento (logs, modelos, etc.) que mostram o que o usuário pode esperar, conforme mostrado <a href="https://api.wandb.ai/report/patrickvonplaten/xm6cd5q5" rel="nofollow">aqui</a>.</li> <li>Se você estiver adicionando um exemplo de treinamento não oficial/de pesquisa, <strong>por favor, não se esqueça</strong> de adicionar uma frase informando que você é o responsável pela manutenção desse exemplo de treinamento, incluindo seu handle do git, conforme mostrado <a href="https://github.com/huggingface/diffusers/tree/main/examples/research_projects/intel_opts#diffusers-examples-with-intel-optimizations" rel="nofollow">aqui</a>.</li></ul> <p>Se você está contribuindo com os exemplos oficiais de treinamento, certifique-se também de adicionar um teste à sua pasta, como <a href="https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/test_dreambooth.py" rel="nofollow">examples/dreambooth/test_dreambooth.py</a>. Isso não é necessário para exemplos de treinamento não oficiais.</p> <!--[2--><h3 class="relative group"><a id="8-fixing-a-good-second-issue" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#8-fixing-a-good-second-issue"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->8. Corrigindo um “Good second issue”<!----></span></h3><!--]--><!----> <p><em>Bons segundos problemas</em> são marcados pelo rótulo <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+second+issue%22" rel="nofollow">Good second issue</a>. Geralmente, são mais complicados de resolver do que os <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="nofollow">Bons primeiros problemas</a>, a descrição oferece menos orientações sobre a correção e é necessário ter um bom entendimento da biblioteca.</p> <p>Se você estiver interessado em resolver um bom segundo problema, compartilhe sua opinião sobre o problema e a abordagem que tem em mente como um comentário, em poucas frases, e obtenha um reconhecimento de um mantenedor antes de abrir o PR. Se um PR já tiver sido aberto para o problema, mas não tiver sido mesclado, verifique para entender o motivo antes de propor algo novo.</p> <!--[2--><h3 class="relative group"><a id="9-taking-on-a-diffusers-mvp-issue" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#9-taking-on-a-diffusers-mvp-issue"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->9. Assumendo uma questão de MVP do Diffusers<!----></span></h3><!--]--><!----> <p>O <a href="https://github.com/huggingface/diffusers/issues/12635" rel="nofollow">programa MVP do Diffusers</a> lista as questões em que mais precisamos de ajuda. Elas funcionam como bons segundos issues, mas são mais difíceis e levam mais tempo, e o programa recompensa os contribuidores que as assumem. Compartilhe sua abordagem como um comentário primeiro e obtenha um reconhecimento de um mantenedor antes de abrir o PR. O programa também tem uma <a href="https://github.com/huggingface/diffusers/issues/14529" rel="nofollow">trilha de ideias</a>: nos conte uma ideia que aumentaria o impacto do Diffusers, em poucas frases e sem detalhes de implementação.</p> <!--[2--><h3 class="relative group"><a id="10-adding-pipelines-models-schedulers" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#10-adding-pipelines-models-schedulers"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->10. Adicionando pipelines, modelos e agendadores<!----></span></h3><!--]--><!----> <blockquote class="tip"><p>Se você é o autor do modelo, entre em contato para que possamos coordenar a integração com você: abra uma solicitação de recurso ou deixe um comentário se já houver uma aberta.</p> <p>Se você é um contribuidor da comunidade, comece por um repositório no Hub, consulte <a href="#6-publish-a-pipeline-or-model-on-the-hub">Publicar um pipeline ou modelo no Hub</a> e nos informe, na solicitação de recurso, que você tem interesse em enviá-lo para o upstream.</p></blockquote> <p>Pipelines, models e schedulers são as peças mais importantes da biblioteca Diffusers. | |
| Eles fornecem acesso fácil às tecnologias de difusão mais avançadas e, assim, permitem que a comunidade | |
| construa poderosas aplicações de IA generativa.</p> <p>Ao adicionar um novo modelo, pipeline ou scheduler, você pode habilitar um novo caso de uso poderoso para qualquer uma das interfaces de usuário que dependem do Diffusers, o que pode ter um valor imenso para todo o ecossistema de IA generativa.</p> <!--[3--><h4 class="relative group"><a id="when-new-model-or-pipeline-support-is-released" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#when-new-model-or-pipeline-support-is-released"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Quando o suporte a um novo modelo ou pipeline é lançado<!----></span></h4><!--]--><!----> <p>Um novo modelo ou pipeline pode ser incluído em uma versão se você coordenar a integração com a equipe do Diffusers com antecedência. Sinta-se à vontade para nos contatar, seja por meio de uma issue no repositório do Diffusers ou enviando um e-mail para <code>diffusers@huggingface.co</code>.</p> <p>Um lançamento não ocorre automaticamente quando uma solicitação de pull request de um modelo ou pipeline é mesclada. Antes de um lançamento, os mantenedores primeiro verificam que a integração está completa e que os testes de lançamento passam.</p> <p>O suporte a um novo modelo ou pipeline normalmente é incluído na próxima versão secundária. A integração é mesclada em <code>main</code> e o ramo de lançamento é criado a partir dele. O lançamento contém todas as alterações mescladas desde o lançamento anterior, e não apenas a integração do modelo ou pipeline.</p> <p>As notas de versão destacam o novo modelo ou pipeline e também resumem as outras alterações incluídas na versão. As versões de correção (patch) são normalmente reservadas para correções em uma versão existente.</p> <p>O Diffusers tem alguns pedidos de recursos abertos para os três componentes - sinta-se à vontade para dar uma olhada neles, caso ainda não saiba qual componente específico gostaria de adicionar:</p> <ul><li><a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+pipeline%2Fmodel%22" rel="nofollow">Modelo ou pipeline</a></li> <li><a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+scheduler%22" rel="nofollow">Agendador</a></li></ul> <p>Antes de adicionar qualquer um dos três componentes, é fortemente recomendável que você leia o <a href="philosophy">Guia de Filosofia</a> para entender melhor o design de qualquer um dos três componentes. Tenha em mente que não podemos mesclar adições de modelos, agendadores ou pipelines que diverjam significativamente da nossa filosofia de design, pois isso levará a inconsistências na API. Se você discordar fundamentalmente de uma escolha de design, abra um <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feedback.md&title=" rel="nofollow">Issue de Feedback</a> para que possamos discutir se um determinado padrão de design/escolha de design deve ser alterado em toda a biblioteca e se devemos atualizar nossa filosofia de design. A consistência em toda a biblioteca é muito importante para nós.</p> <p>Certifique-se de adicionar links para o repositório de código original/paper na PR e, idealmente, também marcar diretamente o autor original na PR para que ele possa acompanhar o progresso e, potencialmente, ajudar com perguntas.</p> <p>Se você estiver em dúvida ou travado no PR, não hesite em deixar uma mensagem pedindo uma primeira revisão ou ajuda.</p> <!--[3--><h4 class="relative group"><a id="copied-from-mechanism" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#copied-from-mechanism"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Copiado de mechanism<!----></span></h4><!--]--><!----> <p>Um recurso único e importante a ser compreendido ao adicionar qualquer código de pipeline, modelo ou scheduler é o mecanismo <code># Copied from</code>. Você verá isso em todo o codebase do Diffusers, e a razão pela qual o utilizamos é para manter o codebase fácil de entender e manter. Marcar código com o mecanismo <code># Copied from</code> força o código marcado a ser idêntico ao código do qual foi copiado. Isso facilita atualizar e propagar alterações entre muitos arquivos sempre que você executa <code>make fix-copies</code>.</p> <p>Por exemplo, no exemplo de código abaixo, <a href="/docs/diffusers/v0.43.0/pt/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput">StableDiffusionPipelineOutput</a> é o código original e <code>AltDiffusionPipelineOutput</code> usa o mecanismo <code># Copied from</code> para copiá-lo. A única diferença é a mudança do prefixo da classe de <code>Stable</code> para <code>Alt</code>.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-comment"># Copied from diffusers.pipelines.stable_diffusion.pipeline_output.StableDiffusionPipelineOutput with Stable->Alt</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">AltDiffusionPipelineOutput</span>(<span class="hljs-title class_ inherited__">BaseOutput</span>): | |
| <span class="hljs-string">""" | |
| Output class for Alt Diffusion pipelines. | |
| Args: | |
| images (`List[PIL.Image.Image]` or `np.ndarray`) | |
| List of denoised PIL images of length `batch_size` or NumPy array of shape `(batch_size, height, width, | |
| num_channels)`. | |
| nsfw_content_detected (`List[bool]`) | |
| List indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content or | |
| `None` if safety checking could not be performed. | |
| """</span><!----></pre></div><!----> <p>Para saber mais, leia esta seção do post no blog <a href="https://huggingface.co/blog/transformers-design-philosophy#4-machine-learning-models-are-static" rel="nofollow">~Don’t~ Repeat Yourself*</a>.</p> <!--[1--><h2 class="relative group"><a id="how-to-write-a-good-issue" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#how-to-write-a-good-issue"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Como escrever um bom problema<!----></span></h2><!--]--><!----> <p><strong>Quanto melhor a sua issue for escrita, maiores serão as chances de ela ser resolvida rapidamente.</strong></p> <ol><li>Certifique-se de que você usou o modelo correto para o seu problema. Você pode escolher entre <em>Bug Report</em>, <em>Feature Request</em>, <em>Feedback about API Design</em>, <em>New model/pipeline/scheduler addition</em> ou um problema em branco. Certifique-se de escolher o correto ao abrir <a href="https://github.com/huggingface/diffusers/issues/new/choose" rel="nofollow">a new issue</a>. Perguntas de uso pertencem às <a href="https://github.com/huggingface/diffusers/discussions" rel="nofollow">GitHub Discussions</a>, não a um problema.</li> <li><strong>Seja preciso</strong>: Dê ao seu problema um título adequado. Tente formular a descrição do seu problema da forma mais simples possível. Quanto mais preciso você for ao enviar um problema, menos tempo levará para entendê-lo e, potencialmente, resolvê-lo. Certifique-se de abrir um problema para apenas um problema e não para vários. Se você encontrou vários problemas, simplesmente abra vários problemas. Se o seu problema for um bug, tente ser o mais preciso possível sobre qual é o bug - você não deve apenas escrever “Error in diffusers”.</li> <li><strong>Reprodutibilidade</strong>: Sem um trecho de código reproduzível == sem solução. Se você encontrar um bug, os mantenedores <strong>precisam ser capazes de reproduzi-lo</strong>. Certifique-se de incluir um trecho de código que possa ser copiado e colado em um interpretador Python para reproduzir o problema. Certifique-se de que seu trecho de código funciona, <em>ou seja</em>, que não há imports faltando ou links para imagens ausentes, … Seu problema deve conter uma mensagem de erro <strong>e</strong> um trecho de código que possa ser copiado e colado sem nenhuma alteração para reproduzir exatamente a mesma mensagem de erro. Se o seu problema usa pesos de modelo locais ou dados locais que não podem ser acessados pelo leitor, o problema não pode ser resolvido. Se você não puder compartilhar seus dados ou modelo, tente criar um modelo fictício ou dados fictícios.</li> <li><strong>Minimalista</strong>: Tente ajudar o leitor a entender o problema o mais rápido possível, mantendo-se o mais conciso que puder. Remova todo o código / toda a informação irrelevante para o problema. Se você encontrou um bug, tente criar o exemplo de código mais simples possível para demonstrar o seu problema; não despeje todo o seu fluxo de trabalho no problema assim que encontrar um bug. Por exemplo, se você treina um modelo e obtém um erro em algum ponto durante o treinamento, você deve primeiro tentar entender qual parte do código de treinamento é responsável pelo erro e tentar reproduzi-lo com algumas linhas. Tente usar dados fictícios em vez de conjuntos de dados completos.</li> <li><strong>Contexto</strong>: Conte-nos em que você estava trabalhando quando encontrou o bug ou precisou do recurso, como um aplicativo construído com Diffusers, um projeto de pesquisa ou um agente que você executou para encontrar bugs na biblioteca. Uma ou duas frases são suficientes, e um link para o projeto é bem-vindo. Recebemos mais issues e PRs do que podemos lidar de uma vez, então o contexto nos ajuda a priorizar pelo impacto.</li> <li>Adicione links. Se você estiver se referindo a uma nomenclatura, método ou modelo específico, certifique-se de fornecer um link para que o leitor possa entender melhor o que você quer dizer. Se estiver se referindo a um PR ou issue específico, certifique-se de vinculá-lo à sua issue. Não assuma que o leitor sabe do que você está falando. Quanto mais links você adicionar à sua issue, melhor.</li> <li>Formatação. Certifique-se de formatar bem a sua issue, formatando o código com a sintaxe de código Python e as mensagens de erro com a sintaxe de código normal. Consulte a <a href="https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax" rel="nofollow">documentação oficial de formatação do GitHub</a> para mais informações.</li> <li>Pense no seu problema não como um chamado a ser resolvido, mas sim como uma bela entrada em uma enciclopédia bem escrita. Cada problema adicionado é uma contribuição para o conhecimento de acesso público. Ao adicionar um problema bem redigido, você não apenas facilita a resolução do seu problema pelos mantenedores, mas também ajuda toda a comunidade a compreender melhor um determinado aspecto da biblioteca.</li></ol> <!--[1--><h2 class="relative group"><a id="how-to-write-a-good-pr" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#how-to-write-a-good-pr"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Como escrever um bom PR<!----></span></h2><!--]--><!----> <ol><li>Comece sempre por uma issue. Encontre a issue que seu pull request aborda ou abra uma se ninguém o fez, e dê aos mantenedores a chance de responder antes de você escrever código. O fluxo de trabalho que melhor funciona para nós é abrir uma issue, depois uma discussão sobre a solução e, em seguida, um PR baseado nessa discussão. Isso nos permite focar nosso tempo nas issues de maior impacto, concordar sobre o escopo antes que o código exista e evitar trabalho duplicado. Mencione o número da issue na descrição do PR (por exemplo, <code>Fixes #1234</code>) para que os dois fiquem vinculados.</li> <li>Seja um camaleão. Entenda os padrões de design e a sintaxe existentes e certifique-se de que suas adições de código se integrem perfeitamente à base de código atual. Pull requests que divergirem significativamente dos padrões de design ou das interfaces de usuário existentes não serão mesclados.</li> <li>Seja extremamente focado. Uma pull request deve resolver um problema e apenas um problema. Certifique-se de não cair na armadilha de “também corrigir outro problema enquanto estamos adicionando isso”. É muito mais difícil revisar pull requests que resolvem múltiplos problemas não relacionados de uma vez.</li> <li>Corrija padrões, não casos isolados. Um único problema pode se estender por vários arquivos: se o mesmo bug se repete em diferentes partes da base de código, procure todas as instâncias e corrija-as em um único PR com um escopo claro e sistemático (por exemplo, “corrigir padrões mutáveis em todos os agendadores”), em vez de um PR por instância.</li> <li>O título da sua pull request deve ser um resumo da sua contribuição. Para indicar um trabalho em andamento, prefixe o título com <code>[WIP]</code>; isso evita trabalho duplicado e separa a PR das que estão prontas para serem mescladas.</li> <li>Tente formular e formatar seu texto conforme explicado em <a href="#how-to-write-a-good-issue">Como escrever um bom issue</a>.</li> <li>Revise o próprio diff antes de abrir o PR. Leia-o como um revisor faria e corrija o que encontrar. Recomendamos fortemente executar a skill <a href="https://github.com/huggingface/diffusers/blob/main/.ai/skills/self-review/SKILL.md" rel="nofollow"><code>self-review</code></a>: ela aplica o mesmo critério do revisor de CI <code>@claude</code>. Configure seu agente conforme descrito em <a href="#coding-with-ai-agents">Coding with AI agents</a> e siga <a href="#ai-assisted-and-agentic-contributions">AI-assisted and agentic contributions</a>. Mencione na descrição as observações que você deixou deliberadamente como estão, para que o revisor saiba que foi uma decisão e não uma falha.</li> <li>Certifique-se de que os testes existentes sejam aprovados.</li> <li>Adicione testes de alta cobertura. Sem testes de qualidade = sem merge.</li></ol> <ul><li>Se você estiver adicionando novos testes <code>@slow</code>, verifique se eles passam usando <code>RUN_SLOW=1 python -m pytest tests/test_my_new_model.py</code>. | |
| O CircleCI não executa os testes lentos, mas o GitHub Actions os executa todas as noites!</li></ul> <ol start="10"><li>Todos os métodos públicos devem ter docstrings informativos que funcionem bem com markdown. Veja <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py" rel="nofollow"><code>pipeline_latent_diffusion.py</code></a> para um exemplo.</li> <li>Devido ao crescimento rápido do repositório, é importante garantir que nenhum arquivo que aumente significativamente o peso do repositório seja adicionado. Isso inclui imagens, vídeos e outros arquivos não textuais. Preferimos aproveitar um <code>dataset</code> hospedado no hf.co, como <a href="https://huggingface.co/hf-internal-testing" rel="nofollow"><code>hf-internal-testing</code></a> ou <a href="https://huggingface.co/datasets/huggingface/documentation-images" rel="nofollow">huggingface/documentation-images</a>, para armazenar esses arquivos. | |
| Se for uma contribuição externa, sinta-se à vontade para adicionar as imagens ao seu PR e pedir a um membro da Hugging Face para migrar suas imagens | |
| para este dataset.</li></ol> <!--[1--><h2 class="relative group"><a id="how-to-open-a-pr" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#how-to-open-a-pr"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Como abrir um PR<!----></span></h2><!--]--><!----> <p>Antes de escrever código, recomendamos fortemente que você pesquise nos PRs ou issues existentes para ter certeza de que ninguém já está trabalhando na mesma coisa. Se você não tiver certeza, é sempre uma boa ideia abrir um issue para obter algum feedback.</p> <p>Você precisará de conhecimento básico de <code>git</code> para poder contribuir com o | |
| 🧨 Diffusers. O <code>git</code> não é a ferramenta mais fácil de usar, mas tem o melhor | |
| manual. Digite <code>git --help</code> em um shell e aproveite. Se você prefere livros, <a href="https://git-scm.com/book/en/v2" rel="nofollow">Pro | |
| Git</a> é uma referência muito boa.</p> <p>Siga estas etapas para começar a contribuir (<a href="https://github.com/huggingface/diffusers/blob/83bc6c94eaeb6f7704a2a428931cf2d9ad973ae9/setup.py#L270" rel="nofollow">versões do Python suportadas</a>):</p> <ol><li><p>Faça o fork do <a href="https://github.com/huggingface/diffusers" rel="nofollow">repositório</a> clicando no botão “Fork” na página do repositório. Isso cria uma cópia do código na sua conta de usuário do GitHub.</p></li> <li><p>Clone seu fork para o disco local e adicione o repositório base como um remote:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ git <span class="hljs-built_in">clone</span> git@github.com:<your GitHub handle>/diffusers.git | |
| $ <span class="hljs-built_in">cd</span> diffusers | |
| $ git remote add upstream https://github.com/huggingface/diffusers.git<!----></pre></div><!----></li> <li><p>Crie um novo branch para conter suas alterações de desenvolvimento:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ git checkout -b a-descriptive-name-for-my-changes<!----></pre></div><!----></li></ol> <p><strong>Não</strong> trabalhe no ramo <code>main</code>.</p> <ol start="4"><li><p>Configure um ambiente de desenvolvimento executando o seguinte comando em um ambiente virtual:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ pip install -e <span class="hljs-string">".[dev]"</span><!----></pre></div><!----></li></ol> <p>Se você já clonou o repositório, talvez precise executar <code>git pull</code> para obter as alterações mais recentes da | |
| biblioteca.</p> <ol start="5"><li>Desenvolva os recursos em seu branch.</li></ol> <p>À medida que você trabalha nos recursos, deve se certificar de que a suíte de testes passa. Você deve executar os testes impactados pelas suas alterações da seguinte forma:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ pytest tests/<TEST_TO_RUN>.py<!----></pre></div><!----> <p>Antes de executar os testes, verifique se você instalou as dependências necessárias para os testes. Você pode fazer isso | |
| com este comando:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ pip install -e <span class="hljs-string">".[test]"</span><!----></pre></div><!----> <p>Você também pode executar a suíte de testes completa com o seguinte comando, mas agora que o Diffusers cresceu bastante, é necessário um computador potente para produzir um resultado em um tempo razoável. Aqui está o comando:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ make <span class="hljs-built_in">test</span><!----></pre></div><!----> <p>🧨 O Diffusers depende de <code>black</code> e <code>isort</code> para formatar seu código-fonte de forma consistente. Após fazer alterações, aplique as correções automáticas de estilo e as verificações de código que não podem ser automatizadas em uma única execução com:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ make style<!----></pre></div><!----> <p>🧨 O Diffusers também usa <code>ruff</code> e alguns scripts personalizados para verificar erros de codificação. O controle de qualidade é executado no CI, mas você também pode executar as mesmas verificações com:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ make quality<!----></pre></div><!----> <p>Quando estiver satisfeito com suas alterações, adicione os arquivos alterados usando <code>git add</code> e | |
| crie um commit com <code>git commit</code> para registrar suas alterações localmente:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ git add modified_file.py | |
| $ git commit -m <span class="hljs-string">"A descriptive message about your changes."</span><!----></pre></div><!----> <p>É uma boa ideia sincronizar sua cópia do código com o repositório original regularmente. Dessa forma, você pode lidar rapidamente com as alterações:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ git pull upstream main<!----></pre></div><!----> <p>Envie as alterações para sua conta usando:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ git push -u origin a-descriptive-name-for-my-changes<!----></pre></div><!----> <ol start="6"><li><p>Quando estiver satisfeito, acesse a | |
| página do seu fork no GitHub. Clique em ‘Pull request’ para enviar suas alterações | |
| aos mantenedores do projeto para revisão.</p></li> <li><p>É normal que os mantenedores peçam alterações. Isso acontece até com os contribuidores principais! Para que todos possam ver as alterações na solicitação de pull, trabalhe em seu branch local e envie as alterações para seu fork. Elas aparecerão automaticamente na solicitação de pull.</p></li></ol> <!--[2--><h3 class="relative group"><a id="tests" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#tests"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Testes<!----></span></h3><!--]--><!----> <p>Um conjunto extensivo de testes é incluído para testar o comportamento da biblioteca e vários exemplos. Os testes da biblioteca podem ser encontrados na <a href="https://github.com/huggingface/diffusers/tree/main/tests" rel="nofollow">pasta de testes</a>.</p> <p>Gostamos de <code>pytest</code> e <code>pytest-xdist</code> porque é mais rápido. A partir da raiz do | |
| repositório, veja como executar os testes com <code>pytest</code> para a biblioteca:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ python -m pytest -n auto --dist=loadfile -s -v ./tests/<!----></pre></div><!----> <p>Na verdade, é assim que o <code>make test</code> é implementado!</p> <p>Você pode especificar um conjunto menor de testes para testar apenas o recurso em que está trabalhando.</p> <p>Por padrão, os testes lentos são ignorados. Defina a variável de ambiente <code>RUN_SLOW</code> como <code>yes</code> para executá-los. Isso baixará vários gigabytes de modelos — certifique-se de ter espaço em disco suficiente e uma boa conexão com a Internet, ou muita paciência!</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ RUN_SLOW=<span class="hljs-built_in">yes</span> python -m pytest -n auto --dist=loadfile -s -v ./tests/<!----></pre></div><!----> <p><code>unittest</code> é totalmente suportado, veja como executar testes com ele:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ python -m unittest discover -s tests -t . -v | |
| $ python -m unittest discover -s examples -t examples -v<!----></pre></div><!----> <!--[2--><h3 class="relative group"><a id="syncing-forked-main-with-upstream-huggingface-main" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#syncing-forked-main-with-upstream-huggingface-main"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Sincronizando o main do fork com o main upstream (HuggingFace)<!----></span></h3><!--]--><!----> <p>Para evitar acionar o repositório de origem, o que adiciona notas de referência a cada PR de origem e envia notificações desnecessárias aos desenvolvedores envolvidos nesses PRs, ao sincronizar o branch principal de um repositório forkado, siga estas etapas:</p> <ol><li>Quando possível, evite sincronizar com o upstream usando um branch e um PR no repositório clonado. Em vez disso, faça o merge diretamente no main do repositório clonado.</li> <li>Se um PR for absolutamente necessário, use as seguintes etapas após fazer o checkout do seu branch:</li></ol> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Copiado</div><!----></button><!----></div> <pre class="language-bash "><!---->$ git checkout -b your-branch-for-syncing | |
| $ git pull --squash --no-commit upstream main | |
| $ git commit -m <span class="hljs-string">'<your message without GitHub references>'</span> | |
| $ git push --set-upstream origin your-branch-for-syncing<!----></pre></div><!----> <!--[2--><h3 class="relative group"><a id="style-guide" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#style-guide"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Guia de estilo<!----></span></h3><!--]--><!----> <p>Para as strings de documentação, o 🧨 Diffusers segue o <a href="https://google.github.io/styleguide/pyguide.html" rel="nofollow">estilo Google</a>.</p> <!--[1--><h2 class="relative group"><a id="coding-with-ai-agents" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#coding-with-ai-agents"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Programando com agentes de IA<!----></span></h2><!--]--><!----> <p>O repositório mantém a configuração do agente de IA em <a href="https://github.com/huggingface/diffusers/tree/main/.ai" rel="nofollow"><code>.ai/</code></a>, que também é publicado como um plugin de agente para que as habilidades de tarefas sob demanda sejam instaladas em uma única etapa.</p> <ul><li><strong>Somente leitura para contribuidores</strong> — <code>.ai/</code> é mantido pelos mantenedores principais. Por favor, não edite arquivos sob <code>.ai/</code> (ou os links simbólicos de nível raiz <code>AGENTS.md</code> / <code>CLAUDE.md</code>, ou os <code>.agents/skills</code> / <code>.claude/skills</code> instalados) no seu PR. Se você encontrar algo ausente ou incorreto, abra uma issue ou sinalize no PR e um mantenedor fará a atualização.</li> <li><strong>Guidelines</strong> — <code>.ai/AGENTS.md</code> é carregado em cada sessão de agente por meio dos links simbólicos raiz <code>AGENTS.md</code> / <code>CLAUDE.md</code> ; os guias de referência sob <code>.ai/references/</code> são lidos sob demanda quando um link é seguido: <ul><li><a href="https://github.com/huggingface/diffusers/blob/main/.ai/AGENTS.md" rel="nofollow"><code>.ai/AGENTS.md</code></a> — diretrizes de codificação de nível superior</li> <li><a href="https://github.com/huggingface/diffusers/blob/main/.ai/references/models.md" rel="nofollow"><code>.ai/references/models.md</code></a> — padrão de atenção, regras de implementação de modelos, convenções comuns</li> <li><a href="https://github.com/huggingface/diffusers/blob/main/.ai/references/pipelines.md" rel="nofollow"><code>.ai/references/pipelines.md</code></a> — convenções de pipeline</li> <li><a href="https://github.com/huggingface/diffusers/blob/main/.ai/references/modular.md" rel="nofollow"><code>.ai/references/modular.md</code></a> — convenções de pipeline modular e lista de verificação de conversão</li> <li><a href="https://github.com/huggingface/diffusers/blob/main/.ai/references/testing.md" rel="nofollow"><code>.ai/references/testing.md</code></a> — camadas de teste obrigatórias, mixins de tester, regras para componentes fictícios</li> <li><a href="https://github.com/huggingface/diffusers/blob/main/.ai/references/review-rules.md" rel="nofollow"><code>.ai/references/review-rules.md</code></a> — o que os revisores procuram</li></ul></li> <li><strong>Skills</strong> (sob <a href="https://github.com/huggingface/diffusers/tree/main/.ai/skills" rel="nofollow"><code>.ai/skills/</code></a>, carregadas sob demanda para tarefas específicas): <ul><li><code>model-integration</code> — adicionar um novo modelo ou pipeline ao diffusers de ponta a ponta (estrutura de arquivos, lista de verificação de integração, layout de testes, conversão de pesos)</li> <li><code>self-review</code> — revise suas alterações em relação às regras do projeto antes de abrir um PR</li> <li><code>diffusers-cli</code> — executar pipelines e inspecionar schemas a partir do terminal</li> <li><code>custom-blocks</code> — empacotando uma subclasse de <code>ModularPipelineBlocks</code> para o Hub</li></ul></li></ul> <p>Independentemente do caminho que você seguir, peça ao seu agente para confirmar a própria configuração antes de começar — <code>python utils/check_ai.py</code> verifica se os guias e as skills estão consistentes, e <code>diffusers-cli skills list</code> mostra quais skills ele realmente possui.</p> <!--[2--><h3 class="relative group"><a id="ai-assisted-and-agentic-contributions" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#ai-assisted-and-agentic-contributions"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Contribuições assistidas por IA e agênticas<!----></span></h3><!--]--><!----> <p>Agentes de IA são bem-vindos para contribuir com o Diffusers. Recomendamos que você configure seu agente com o <a href="https://github.com/huggingface/diffusers/blob/main/.ai/AGENTS.md" rel="nofollow">guia de agentes</a> do Diffusers e utilize as habilidades específicas de tarefa relevantes, como <code>model-integration</code> e <code>self-review</code>. Instale o plugin (ou as habilidades individuais) conforme descrito acima e, em seguida, siga o guia para definir o escopo, implementar, testar e revisar sua contribuição. Você continua sendo responsável por compreender, testar e manter as alterações no seu PR.</p> <p>Contribuições assistidas por IA são bem-vindas, mas devem ser coordenadas, delimitadas e verificadas para manter a carga de revisão gerenciável. PRs que não seguirem essas diretrizes podem ser fechados sem uma revisão detalhada.</p> <ul><li><strong>Coordene antes de abrir um PR.</strong> Encontre ou abra uma issue, revise PRs semelhantes (abertos e fechados recentemente) e aguarde um reconhecimento explícito de um mantenedor naquela issue antes de abrir um PR. Isso nos dá a chance de discutir o escopo, evitar trabalho duplicado e confirmar a abordagem.</li> <li><strong>Corrija padrões, não casos isolados.</strong> Se você identificar um problema recorrente, pesquise na base de código por instâncias semelhantes e abra um <em>único</em> problema com um escopo claro e sistemático (por exemplo, “corrigir padrões mutáveis em todos os agendadores”) em vez de muitos problemas ou PRs para instâncias individuais.</li> <li><strong>Autoavaliação antes de abrir.</strong> Execute a skill <a href="https://github.com/huggingface/diffusers/blob/main/.ai/skills/self-review/SKILL.md" rel="nofollow"><code>self-review</code></a> — ela avalia seu diff com base em <a href="https://github.com/huggingface/diffusers/blob/main/.ai/references/review-rules.md" rel="nofollow"><code>.ai/references/review-rules.md</code></a>, o mesmo critério usado pelo revisor de CI <code>@claude</code> — e trate o que ela relatar — é um auxiliar, não é autoritativo, e pode estar errado. Foque nos problemas bloqueantes que fazem sentido para você e limpe o máximo possível o código morto/não utilizado. Se você discordar de uma sugestão, está tudo bem deixá-la para o revisor discutir depois que o PR for aberto — as notas que você compartilha (veja abaixo) informam ao revisor que foi uma decisão deliberada.</li> <li><strong>Compartilhe suas anotações de autoavaliação.</strong> Publique o relatório final de autoavaliação — a rodada que reflete o diff que você está enviando — no PR, na descrição ou como um comentário, incluindo as observações que você optou por não corrigir e o motivo. Isso ajuda o revisor a ver o que já foi verificado e quais decisões foram intencionais, e geralmente economiza algumas rodadas de idas e vindas.</li> <li><strong>Mantenha a comunicação do seu PR concisa.</strong> Tudo o que um revisor lê no seu PR — a descrição, as mensagens de commit, os comentários e as respostas, os comentários de código — deve ser fácil para um humano entender. Se o seu agente redigiu o texto, não apenas dê uma olhada rápida. Leia-o e peça ao agente para revisar até que ele diga algo sensato e conciso que você mesmo escreveria. Você é o autor de tudo o que publica.</li> <li><strong>Include in the PR description:</strong> <ul><li>Um <strong>link de coordenação</strong> para a issue ou discussão em que um mantenedor reconheceu o trabalho.</li> <li>Os <strong>comandos de teste que você executou</strong> e seus resultados (cole a saída relevante, não apenas “tests pass”).</li> <li>Suas <strong>notas de autoavaliação</strong> (ou um link para o comentário da PR que as contém), conforme descrito acima.</li></ul></li></ul> <p>Se você é autor de um modelo ou faz parte de uma equipe que mantém oficialmente um modelo, incentivamos o uso de agentes para a integração de um novo modelo. Siga a <a href="https://github.com/huggingface/diffusers/blob/main/.ai/AGENTS.md" rel="nofollow">configuração recomendada</a> do repositório e utilize a habilidade <a href="https://github.com/huggingface/diffusers/blob/main/.ai/skills/model-integration/SKILL.md" rel="nofollow"><code>model-integration</code></a>. Coordene o escopo com os mantenedores antes de abrir um PR — consulte <a href="#10-adding-pipelines-models-schedulers">Adicionando pipelines, modelos e agendadores</a>.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/diffusers/blob/main/docs/source/en/conceptual/contribution.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]--> | |
| <script> | |
| { | |
| __sveltekit_ywq9g6 = { | |
| base: "/docs/diffusers/v0.43.0/en", | |
| assets: "/docs/diffusers/v0.43.0/en" | |
| }; | |
| const element = document.currentScript.parentElement; | |
| Promise.all([ | |
| import("/docs/diffusers/v0.43.0/en/_app/immutable/entry/start.1gaXe03k.js"), | |
| import("/docs/diffusers/v0.43.0/en/_app/immutable/entry/app.BwdYRbCn.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 304], | |
| data: [null,null], | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 126 kB
- Xet hash:
- 5767196c1517bf0e9b3339ae684ea906f08f51e9cdbf73519cb97e1f261f4647
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.