LeRobot documentation

SmolVLA

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SmolVLA

SmolVLA é o modelo de fundação leve da Hugging Face para robótica. Projetado para facilitar o ajuste fino em conjuntos de dados LeRobot, ele ajuda a acelerar seu desenvolvimento!

SmolVLA architecture.
Figura 1. O SmolVLA recebe como entrada (i) múltiplas visões de câmeras, (ii) o estado sensorimotor atual do robô e (iii) uma instrução em linguagem natural, codificada em recursos contextuais usados para condicionar o especialista de ações ao gerar um trecho de ação.

Configure seu ambiente

  1. Instale o LeRobot seguindo nosso Guia de Instalação.

  2. Instale as dependências do SmolVLA executando:

    pip install -e ".[smolvla]"

Coletar um conjunto de dados

SmolVLA é um modelo base, portanto, é necessário fazer fine-tuning com seus próprios dados para obter desempenho ideal em sua configuração. Recomendamos gravar cerca de 50 episódios da sua tarefa como ponto de partida. Siga nosso guia para começar: Gravando um Dataset

No seu conjunto de dados, certifique-se de ter demonstrações suficientes para cada variação (por exemplo, a posição do cubo na mesa, se for uma tarefa de pegar e colocar o cubo) que você estiver introduzindo.

Recomendamos consultar o conjunto de dados vinculado abaixo, que serviu de referência e foi utilizado no artigo SmolVLA:

🔗 SVLA SO100 PickPlace

Neste conjunto de dados, registramos 50 episódios em 5 posições distintas do cubo. Para cada posição, coletamos 10 episódios de interações de pegar e colocar. Essa estrutura, que repete cada variação várias vezes, ajudou o modelo a generalizar melhor. Tentamos um conjunto de dados semelhante com 25 episódios, e isso não foi suficiente, resultando em um desempenho ruim. Portanto, a qualidade e a quantidade dos dados são definitivamente fundamentais. Depois que seu conjunto de dados estiver disponível no Hub, você está pronto para usar nosso script de finetuning para adaptar o SmolVLA ao seu aplicativo.

Ajuste fino do SmolVLA com seus dados

Use smolvla_base, nosso modelo pré-treinado de 450M, e ajuste-o finamente em seus dados. Treinar o modelo por 20k etapas levará aproximadamente ~4 horas em uma única GPU A100. Você deve ajustar o número de etapas com base no desempenho e no seu caso de uso.

Se você não tiver um dispositivo gpu, pode treinar usando nosso notebook em Google Colab

Passar seu conjunto de dados para o script de treinamento usando --dataset.repo_id. Se você quiser testar sua instalação, execute o comando a seguir, no qual usamos um dos conjuntos de dados que coletamos para o SmolVLA Paper. Substitua-o pelo seu próprio conjunto de dados para fazer o ajuste fino nos seus dados.

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so100_pickplace \
  --policy.repo_id=${HF_USER}/my_smolvla \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --trackio.enable=true
  • --policy.repo_id é o repositório do Hub para o qual o modelo ajustado é enviado.
  • --rename_map mapeia os nomes das câmeras do conjunto de dados para os nomes camera1, camera2 e camera3 que o smolvla_base espera. Sem ele, o treinamento é interrompido com um erro de incompatibilidade de recursos. Mapeie seus próprios nomes de câmeras da mesma forma (veja Rename Map).
You can start with a small batch size and increase it incrementally, if the GPU allows it, as long as loading times remain short.

O fine-tuning é uma arte. Para uma visão completa das opções de fine-tuning, execute

lerobot-train --help

Comparison of SmolVLA across task variations.
Figura 2: Comparação do SmolVLA entre variações de tarefa. Da esquerda para a direita: (1) contagem de cubos pick-place, (2) contagem de cubos pick-place, (3) contagem de cubos pick-place sob perturbações e (4) generalização no pick-and-place do bloco de lego com SO101 do mundo real.

Avalie o modelo ajustado e execute-o em tempo real

Da mesma forma, ao gravar um episódio, é recomendado que você esteja conectado ao HuggingFace Hub. Você pode seguir as etapas correspondentes: Gravar um dataset. Depois de conectado, você pode executar inferência no seu ambiente da seguinte forma:

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_blue_follower_arm \
  --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --task="Grasp a lego block and put it in the bin." \
  --policy.path=${HF_USER}/FINETUNE_MODEL_NAME

Substitua --robot.port, --robot.id, --robot.cameras e --policy.path pela sua própria porta, ID do robô, câmeras (os mesmos nomes de câmera e resolução do seu conjunto de dados) e modelo ajustado. Passe o mesmo --rename_map que você usou para o treinamento e a mesma descrição de --task da gravação do seu conjunto de dados.

Flags opcionais que você pode adicionar ao comando acima:

  • RTC (movimento mais suave quando a inferência é lenta, por exemplo, em hardware de baixa potência): --inference.type=rtc --inference.rtc.execution_horizon=10 --inference.rtc.max_guidance_weight=10.0
  • Ver o fluxo da câmera: --display_data=true
  • Parar automaticamente: --duration=60 (em segundos). Por padrão, a política é executada até você pressionar Ctrl+C.

Para gravar episódios de avaliação, com um teleoperador opcional para redefinir a cena entre eles, use --strategy.type=episodic em vez disso. Consulte Policy Deployment para todas as estratégias.

Update on GitHub