Pular para o conteúdo

Um modelo de 1,2 milhão de parâmetros cria peças CAD reais no FreeCAD (sem LLM; eu o executei)

Ver no idioma original →

Autoria: Prompt Engineer 48 · Assistir no YouTube

Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.

Idioma original: inglês

Vídeo original: A 1.2M-Parameter Model Builds Real CAD Parts in FreeCAD (No LLM, I Ran It) · Canal: Prompt Engineer 48 · 08:20 · Assistir no YouTube

Tópicos: Agentes de IA, Avaliação e benchmarks de IA, Engenharia de software com IA, Modelos de IA, Modelos locais e open source

O vídeo demonstra o Taiga S1, um modelo de 1,23 milhão de parâmetros que executa comandos no FreeCAD para construir peças CAD a partir de uma lista ordenada de recursos. O apresentador o executa em um laptop Windows e mostra construções bem-sucedidas, incluindo uma flange e uma roda com ranhuras. O modelo escolhe o próximo tipo de comando, enquanto as dimensões e outros valores vêm dos itens do objetivo; ele não planeja a sequência. A demonstração também aborda velocidade, resultados relatados pelos autores, limitações e como testar o projeto.

  • O Taiga S1 é um transformer de três camadas com 1,23 milhão de parâmetros, e seu arquivo de pesos ocupa cerca de 6,7 MB.
  • O modelo lê o estado atual do FreeCAD, pontua os comandos válidos e escolhe o próximo; dimensões e contagens são fornecidas pelo objetivo.
  • O apresentador executou o projeto no Windows após configurar duas variáveis de ambiente para localizar o FreeCAD.
  • Na demonstração da flange, o modelo executou 27 comandos e alcançou IOU de 1,0000 em relação à peça-alvo.
  • Os seis objetivos de demonstração do repositório foram concluídos com IOU de 1 e correspondência com o professor em cada etapa.
  • Na CPU do laptop, o apresentador mediu mediana de 4,4 ms por decisão; a execução pela interface gráfica levou cerca de 10 ms por etapa.
  • Segundo os resultados dos autores, o modelo manteve alta taxa de conclusão em objetivos mais longos e recuperou-se de erros introduzidos aleatoriamente.
  • O modelo não planeja, e o escopo demonstrado é a criação sintética de peças na bancada Part Design; não se deve esperar que modele peças arbitrárias complexas.
Início Capítulo Resumo
00:00 O Taiga S1 e como escolhe comandos O vídeo apresenta o modelo, sua arquitetura pequena e o método de selecionar comandos a partir do estado atual do FreeCAD.
02:04 Configuração e construção de uma flange O apresentador configura o projeto no Windows e demonstra a criação de uma flange por meio de comandos sucessivos.
03:37 Outras peças e velocidade São apresentados outros objetivos de demonstração, uma roda com ranhuras e medições de tempo por decisão.
05:43 Treinamento e generalização O vídeo resume o treinamento, os resultados relatados pelos autores e testes com combinações de recursos não vistas.
07:19 Limitações e como experimentar O apresentador destaca as limitações, explica que o modelo não planeja e descreve os passos para executar a demonstração.

Um modelo minúsculo, com apenas 1,2 milhão de parâmetros, constrói uma flange real no FreeCAD, comando por comando. — 00:00

O agent planeja; o Taiga executa. — 01:02

O resultado indica IOU de 1,0000 em relação ao alvo, e o modelo concordou com o teacher roteirizado nas 27 etapas. — 03:05

Uma ranhura se transforma em um anel de oito. — 04:09

O modelo não planeja. Alguém ou algum modelo maior precisa fornecer o objetivo ordenado. — 07:19

  • Taiga S1 (modelo): Modelo pequeno que escolhe comandos para construir peças CAD no FreeCAD a partir de objetivos ordenados.
  • FreeCAD (ferramenta): Aplicativo CAD usado para criar e editar as peças na demonstração.
  • Hugging Face (empresa): Plataforma onde o modelo está disponibilizado sob a licença MIT, conforme o vídeo.
  • Shiv (pessoa): Autor associado ao Taiga S1 no vídeo.
  • teacher (conceito): Componente roteirizado que gera dados de treinamento e fornece os rótulos de referência para as ações do modelo.
  • DAgger (conceito): Método de coleta iterativa de dados mencionado como parte do treinamento, no qual o modelo conduz o FreeCAD e o teacher rotula os estados visitados.
  • Part Design (conceito): Bancada do FreeCAD usada para o trabalho sintético de modelagem de peças mostrado.

00:00 Certo, neste vídeo vamos ver um modelo minúsculo, com apenas 1,2 milhão de parâmetros, construir um flange de verdade no FreeCAD, comando por comando. E você pode ver que ele acerta a peça exatamente. Vale lembrar que não há nenhum LLM grande aqui, nenhum modelo de visão, nenhuma captura de tela, e executei tudo isso no meu próprio laptop Windows, aquele com a GPU de 8 GB. Vamos testar. Este é o Taiga S1, de Shiv, disponível no Hugging Face sob a licença MIT. É um transformer de três camadas, com 1,23 milhão de parâmetros, e o arquivo inteiro de safe

00:31 tensors tem apenas cerca de 6,7 megabytes. O que ele faz é construir peças CAD dentro do FreeCAD. Você fornece um objetivo, que é uma lista ordenada de recursos, como uma placa, depois um furo, depois um padrão polar e, por fim, um filete, e ele constrói a peça, um comando de cada vez. Selecionar um plano, criar um esboço, desenhar, restringir, extrudar. Só isso. A ideia por trás disso é realmente interessante. O autor o chama de modelo system one. Então, há um planejador, que pode ser um LLM grande, que decide o que fazer. E depois há esse modelo minúsculo, que cuida da execução passo a passo. O agent

01:02 planeja, o Taiga executa. E isso importa por causa da velocidade e do custo. Clicar em botões não exige um modelo de ponta. E, se você observar, a decisão acontece em uma única passagem forward na CPU. Então, como funciona? A cada etapa, ele lê o estado atual do FreeCAD, e esse estado é convertido em tokens: um token para cada objeto na árvore de recursos, a geometria do esboço, as restrições, a seleção atual, os últimos oito comandos e os itens do objetivo. Então, os comandos válidos naquele momento se tornam as opções. A mesma ideia dos botões da barra de ferramentas que estão ativos. Cada

01:33 opção recebe uma pontuação em uma única passagem, e você escolhe a melhor. Assim, o espaço de ações pode mudar a cada etapa, o que é muito bacana. Mais uma coisa: o modelo só escolhe o tipo de comando. Os valores concretos, como tamanhos, profundidades, raios e quantidades, vêm do próprio objetivo. Então, o modelo não está adivinhando dimensões; está decidindo o que clicar em seguida. Vamos configurá-lo. Clonei o repo, instalei o FreeCAD 1.1.4 com winget e criei um ambiente Python com UV. Agora, o repo foi desenvolvido primeiro para Mac e Linux, então não encontrou o FreeCAD

02:04 no Windows por conta própria. O que você pode fazer é definir duas variáveis de ambiente, FreeCAD_Ty e FreeCAD_Lib, e apontá-las para a pasta bin do FreeCAD. Depois disso, funciona normalmente. Então, primeiro vamos executar os testes. Isso inclui testes de integração que se comunicam com o FreeCAD real, e você pode ver que os 16 passaram em cerca de 74 segundos no Windows. Um bom começo. Agora, para a demonstração ao vivo, o repo tem uma pequena macro que inicia um servidor de socket dentro da interface gráfica do FreeCAD. Abro o FreeCAD com essa macro e, em seguida, um script Python

02:34 carrega o modelo do Hugging Face e controla o aplicativo por meio desse socket. Este é o objetivo: um cilindro de base com raio 36 e altura oito, depois um cilindro saliente no topo com raio 15, depois um furo, depois um padrão polar de seis elementos e, por fim, um chanfro na aresta superior. Cinco recursos. Vamos ver o que ele faz. Você pode ver que ele começa criando o corpo, depois seleciona o plano XY, cria um novo esboço, desenha um círculo, fixa-o, define o diâmetro, sai do esboço e faz a extrusão. Depois seleciona a

03:05 face superior e faz a mesma coisa para o ressalto. Depois, o esboço do furo, um corte e, agora, ele seleciona a ponta e executa o padrão polar. Em seguida, seleciona as arestas superiores, aplica chanfros e diz: “Concluído”. 27 comandos ao todo, e o resultado indica sucesso, com interseção sobre união de 1,0000 em relação ao alvo, e o modelo concordou com o professor com script em todas as 27 etapas. Isso é realmente ótimo. E não se trata apenas de um flange. O repo vem com seis objetivos de demonstração. Então, executei todos

03:37 eles. A porca sextavada levou 19 comandos, a roda com ranhuras, 28; o invólucro, 14; a placa de montagem, 38; e a arruela, 12. Todos os seis foram concluídos com sucesso, com IOU igual a um, e cada etapa correspondeu à do professor. Vale lembrar que esses são os próprios objetivos de demonstração dos autores. Então, é um bom começo, não um teste completo. Deixe-me mostrar mais uma construção em detalhes: a roda com ranhuras, porque ela tem um padrão. Um disco de base com raio 32, depois um furo central, depois um esboço de ranhura retangular perto da borda e um corte. E agora você pode vê-lo selecionar a ponta e executar o padrão polar

04:09 para transformar uma ranhura em um anel com oito. Depois, ele aplica filetes às arestas superiores e diz “concluído”. 28 comandos. E, mais uma vez, o resultado corresponde perfeitamente. Agora, vamos falar de velocidade. A alegação é de cerca de 1 milissegundo por decisão. Na CPU do meu laptop, medi uma mediana de 4,4 milissegundos, com percentil 95 de 6,4. Então, aqui não são 1 milissegundo, mas ainda são poucos milissegundos, e isso é uma decisão completa, do estado ao comando. E, na execução ao vivo na interface, cada etapa levou cerca de

04:39 10 milissegundos, porque isso inclui ler o estado e se comunicar com o FreeCAD. A parte lenta é o próprio FreeCAD, não o modelo. Agora, os números do model card. Estes são os resultados dos autores. Não os reproduzi. Em peças parecidas com as do conjunto de treinamento, com um a cinco recursos, ele constrói corretamente em 100% dos casos. Com 11 recursos, o que dá cerca de 55 comandos e é mais do que qualquer coisa com que foi treinado, ele concluiu todos os 100 objetivos reservados para teste. Com 13 e 15 recursos, ainda chega a 100% e, com 17, a 95%. A precisão por etapa em relação

05:10 ao professor é de 99,8%. E ele se recupera de erros. Quando 20% das ações são substituídas por ações aleatórias, ele percebe o dano, desfaz o que fez e ainda conclui entre 86% e 100% das peças. Isso porque os dados de treinamento tinham erros aleatórios misturados em 60% das sessões. Então, ele aprendeu a corrigir as coisas. Agora, onde ele realmente falha? O autor mediu a precisão por etapa em mais de 44.000 etapas, e 13 das 14 categorias de comando chegam a 100%. A mais fraca é desfazer, com 97,1%

05:43 em cerca de 2.500 etapas. Desfazer é o movimento de recuperação, então esse é exatamente o ponto que você deve observar se exigir mais dele. O treinamento também é simples. 24.000 sessões sintéticas de modelagem, cerca de 590.000 decisões, todas geradas no FreeCAD sem interface gráfica, com um professor com script. Depois, duas rodadas de dagger, em que o modelo controla o FreeCAD ao vivo e o professor rotula o que ele realmente visita. E, então, ajusta-se uma temperatura para calibrar as probabilidades. Agora, se você se interessa pelo lado da pesquisa, esta é a parte interessante. Ele foi treinado com objetivos de até cinco recursos,

06:15 mas consegue lidar com 11. O autor identificou quatro fatores importantes. IDs de posição aleatorizados durante o treinamento, para que ele nunca falhe com números que não viu antes. O pareamento do número do item do objetivo com a posição na árvore de recursos. Uma verificação de conclusão para cada item do objetivo, que funcionou melhor do que um ponteiro sobre o objetivo inteiro. E a fatoração dos tipos de recursos para combinações que ele nunca viu. E combinações de recursos que nunca apareceram no treinamento ainda tiveram resultados de 90 a 100%. Há mais um teste de que gostei: combinações que nunca aparecem no treinamento. O autor executou três delas, com 100 objetivos cada. Duas chegaram a 100%.

06:47 A terceira combina um furo espelhado com um ressalto em padrão e teve 90%. E, dentro desse conjunto, os objetivos com furos espelhados são o ponto fraco, com cerca de 80%. Então, ele é forte, mas não faz mágica, e a própria tabela do autor mostra onde ele escorrega. Certo, agora a parte sincera. Primeiro, o repo foi desenvolvido primeiro para Mac e Linux. Então, no Windows, você mesmo precisa definir essas duas variáveis de ambiente. Segundo, quando salvei capturas de tela com fundo transparente, o FreeCAD travou na minha máquina. Então, mudei para o fundo normal e funcionou bem. Terceiro, tudo isso é trabalho sintético de projeto de peças na bancada Part Design.

07:19 Então, não espere que ele modele um bloco de motor qualquer. E, quarto, ele não planeja. Alguém ou algum modelo maior precisa fornecer a ele o objetivo ordenado. Além disso, é muito novo: cerca de 126 downloads quando verifiquei. Mas gosto da direção. O autor diz que o próximo passo é usar a mesma abordagem em aplicativos sem API de scripting, usando a árvore de acessibilidade do sistema operacional. Assim, um modelo grande planeja e um modelo minúsculo como este clica localmente em milissegundos. E, se quiser experimentar você mesmo, ele

07:49 são apenas alguns comandos. Crie o ambiente, instale o pacote, inicie o FreeCAD com a macro do servidor e, em seguida, execute o script de demonstração com o nome do modelo no Hugging Face. Na primeira execução, ele baixa os pesos; depois, você pode assistir enquanto ele constrói ou alterar o arquivo de objetivo e fornecer sua própria lista de recursos. Lembre-se: a parte do planejador fica por sua conta. Então, neste vídeo, vimos um modelo de 1,2 milhão de parâmetros construir peças reais no FreeCAD em um laptop com Windows. Se tiver interesse, você pode conferir e experimentar no seu próprio sistema também. Depois me conte como

08:20 foi. O modelo é o Tiger S1, de Shiv, e os links estão na descrição. Vejo você em outro vídeo. Confira o próximo vídeo.

Transcrição original

[00:00] All right, in this video we will see a tiny model, just 1.2 million parameters, build a real flange in FreeCAD command by command. And you can see that it gets the part exactly right. Now, mind you, there is no big language model here, no vision model, no screenshots, and I ran all of this on my own Windows laptop, the one with the 8GB GPU. Let’s go ahead and test this out. So, this is Taiga S1 from Shiv, and it is up on Hugging Face under the MIT license. It’s a three-layer transformer with 1.23 million parameters, and the whole safe

[00:31] tensors file is only about 6.7 megabytes. What it does is build CAD parts inside FreeCAD. You give it a goal, which is an ordered list of features like a plate, then a hole, then a polar pattern, then a fillet, and it builds the part one command at a time. Select a plane, sketch, draw, constrain, pad. That’s it. Now, the idea behind it is really interesting. The author calls it a system one model. So, you have a planner, which can be a big language model, that decides what to do. And then you have this tiny model that handles the step-by-step execution. The agent

[01:02] plans, Taiga executes. And the reason that matters is speed and cost. Clicking buttons does not need a frontier model. And if you look at this, the decision happens in a single forward pass on the CPU. So, how does it work? At every step, it reads the live state of FreeCAD, and that state is turned into tokens, one token for each object in the feature tree, the sketch geometry, the constraints, the current selection, the last eight commands, and the goal items. Then the commands that are valid right now become the options. The same idea as which toolbar buttons are active. Every

[01:33] option gets a score in one pass, and you pick the best one. So, the action space can change at every step, which is really neat. One more thing. The model only picks the command type. The actual numbers, like the sizes, the depths, the radii, and the counts, come from the goal itself. So, the model is not guessing dimensions, it is deciding what to click next. Let’s go ahead and set it up. I cloned the repo, installed FreeCAD 1.1.4 with winget, and made a Python environment with UV. Now, the repo is built Mac and Linux first, so it did not find FreeCAD

[02:04] on Windows by itself. What you can do is set two environment variables, FreeCAD_Ty and FreeCAD_Lib, and point them at the FreeCAD bin folder. After that, it just works. So, first let’s run the tests. This include integration tests that talk to the real FreeCAD, and you can see that all 16 passed in about 74 seconds on Windows. Good start. Now, for the live demo, the repo has a small macro that starts a socket server inside the FreeCAD GUI. I launch FreeCAD with that macro, and then a Python

[02:34] script loads the model from hugging face and drives the app over that socket. Here is the goal, a base cylinder radius 36, height eight, then a boss cylinder on top radius 15, then a hole, then a polar pattern of six, and then a chamfer on the top edge. Five features, and let’s see what it does. And you can see it starts by creating the body, then it selects the XY plane, makes a new sketch, creates a circle, locks it, sets the diameter, leaves the sketch, and pads. Then it selects the

[03:05] top face and does the same thing again for the boss. Then the whole sketch, a pocket, and now it selects the tip and runs the polar pattern. Then it selects the top edges, chamfers them, and says, “Done.” 27 commands in total, and the result says success intersection over union of 1.0000 against the target, and the model agreed with the scripted teacher on all 27 steps. That’s really great. And it is not just a flange. The repo ships six showcase goals. So, I ran all

[03:37] of them. The hex nut took 19 commands, the slotted wheel 28, the enclosure 14, the mounting plate 38, and the washer 12. All six succeeded with an IOU of one, and every step matched the teacher. Mind you, these are the authors’ own showcase goals. So, this is a good start, not a full test. Let me show you one more build in detail, the slotted wheel, because it has a pattern in it. A base disk radius 32, then a center hole, then a rectangular slot sketch near the edge, and a pocket. And now you can see it select the tip and run the polar

[04:09] pattern, so that one slot turns into a ring of eight. Then it fillets the top edges and says done. 28 commands. And again, the result is a perfect match. Now, let’s talk about speed. The claim is about 1 millisecond per decision. On my laptop CPU, I measured a median of 4.4 milliseconds with a 95th percentile at 6.4. So, it is not 1 millisecond here, but it is still a few milliseconds, and that is a full decision from state to command. And in the live GUI run, each step was around

[04:39] 10 milliseconds because that includes reading the state and talking to FreeCAD. The slow part is FreeCAD itself, not the model. Now, the numbers from the model card. These are the authors’ results. I did not reproduce them. On parts like the training set, one to five features, it builds 100% correctly. On 11 features, which is about 55 commands and longer than anything it trained on, it completed all 100 held-out goals. At 13 and 15 features, it is still 100% and at 17, it is 95. Per-step accuracy against

[05:10] the teacher is 99.8%. And it recovers from mistakes. When 20% of its actions are replaced by random ones, it notices the damage, undoes it, and still finishes between 86 and 100% of the parts. That is because the training data had random mistakes mixed into 60% of the sessions. So, it learned how to fix things. Now, where does it actually miss? The author measured per-step accuracy on over 44,000 steps, and 13 of the 14 command categories are at 100%. The weak one is undo at 97.1%

[05:43] across about 2,500 steps. Undo is the recovery move, so that is exactly the place you would want to watch if you push it harder. The training is also simple. 24,000 synthetic modeling sessions, around 590,000 decisions, all generated in headless FreeCAD with a scripted teacher. Then two rounds of dagger where the model drives live FreeCAD and the teacher labels what it actually visits. And then a temperature is fitted so the probabilities are calibrated. Now, if you’re into the research side, this is the interesting part. It was trained on goals of up to five features,

[06:15] but it handles 11. The author found four things that mattered. Randomized position IDs during training, so it never breaks on numbers it has not seen. Coupling the goal item number with the feature tree position. A done check for each goal item, which worked better than a pointer over the whole goal. And factorize feature types for combinations it has never seen. And feature pairings that never appeared in training still came out at 90 to 100%. There is one more test I like. Combinations that never appear in training. The author ran three of them. 100 goals each. Two came out at 100%.

[06:47] The third mixes a mirrored hole with a patterned boss and it got 90%. And inside that one, the mirrored hole goals are the weak part at about 80%. So, it is strong, but it is not magic and the author’s own table shows where it slips. Okay, now the honest part. First, repo is Mac and Linux first. So, on Windows, you need to set those two environment variables yourself. Second, when I saved screenshots with a transparent background, FreeCAD crashed on my machine. So, I switched to the normal background and it was fine. Third, all of this is synthetic part design work in

[07:19] the part design workbench. So, do not expect it to model your random engine block. And fourth, it does not plan. Someone or some bigger model has to give it the ordered goal. Also, it is very new, about 126 downloads when I checked. But, the direction is what I like. The author says the next step is the same approach for apps that have no scripting API using the operating system’s accessibility tree. So, a big model plans and a tiny model like this one clicks locally in milliseconds. And if you want to try this yourself, it

[07:49] is only a few commands. Make the environment, install the package, start FreeCAD with the server macro, and then run the demo script with the model name from Hugging Face. It downloads the weights on the first run, and then you can watch it build or change the goal file and give it your own list of features. Remember, the planner part is up to you. So, in this video, we have seen a 1.2 million parameter model build real parts in FreeCAD on a Windows laptop. If you’re interested, you can go ahead and check this out and try this out on your own system as well, and let me know how

[08:20] it goes. The model is Tiger S1 by Shiv, and the links are in the description. I’ll see you in another one. Check out the next video.