HuggingFace进军机器人:发布LeRobot,无需硬件即可操作,大大降低机器人研发门槛,未来支持ROS!

技术

Aitrainee | 公众号:AI进修生

🌟面向现实世界机器人的最先进的机器学习,旨在大大降低进入机器人技术的门槛,无需组装机器人即可开始使用的模拟环境,LeRobot 对于机器人学来说就像Transformers库对于NLP一样。

picture.image

今年3月,Hugging Face(以维护最大的开源人工智能模型而闻名)通过“挖角”特斯拉公司前研究员 Cadene引起轰动。

而如今,Cadene领导了一个新的开源机器人项目LeRobot——一个旨在 降低 进入机器人技术的门槛,以便每个人都可以做出贡献并从共享数据集和预训练模型中受益,激发新一代机器人学家的创新活力, 现在已经在Github上可用。

Cadene在他的X账户(原Twitter)上发布了一系列推文,表达了他的观点:“人工智能的下一步是进入我们的物理世界。”他介绍了这个社区驱动的努力,强调其对所有人开放的特性。

picture.image

LeRobot 是什么?

LeRobot 是一个强大的框架,LeRobot 对于机器人学来说就像 Transformers 库对于 NLP 一样。

picture.image

该工具包不仅是一个软件包,而且是一个包含了用于共享、可视化数据和训练最先进模型的多功能库的全面平台。

LeRobot 包含最先进的方法,这些方法已被证明可以转移到现实世界,重点是模仿学习和强化学习。用户还可以访问大量预训练模型,以启动他们的项目。

此外,LeRobot 与物理模拟器无缝集成,这使得没有物理机器人硬件的爱好者和开发者可以在 虚拟环境 中模拟和测试他们的人工智能模型。

picture.image

▲ 模拟环境中预训练模型的示例

功能和特点

该工具包的功能不仅限于软件。

它设计用于处理各种机器人硬件——从用于教育和研究的简单机器人手臂到在先进人工智能研究机构中看到的更复杂的人形机器人。

其目标是提供一个可以适应和控制任何形式的机器人的人工智能系统,从而实现机器人应用的多功能性和可扩展性。

Cadene 在 Github 上现在可用的 LeRobot 库中发布了一些示例,展示了代码提供的机器人能力,包括训练机器人在未绘制的空间中导航和从视频中抓取物体……

以及如何在两个机器人夹手/手臂之间传递物体。

picture.image

picture.image

▲ 未来:与Ros的兼容

实现现实世界机器人领域的机器学习的最新技术

🤗 LeRobot在此Hugging Face社区页面上托管预训练模型和数据集:huggingface.co/lerobot

安装

下载我们的源代码:


      
      
          

        git 
        clone
         https
        ://
        github
        .
        com
        /
        huggingface
        /
        lerobot
        .
        git 
        &&
         
        cd
         lerobot
      
    

创建一个带有Python 3.10的虚拟环境并激活它,例如使用miniconda


      
      
          

        conda create 
        -
        y 
        -
        n lerobot python
        =
        3.10
         
        &&
         conda activate lerobot
      
    

安装🤗 LeRobot:


      
      
          

        pip install 
        .
      
    

对于模拟环境,🤗 LeRobot附带了可以作为额外安装的gymnasium环境:

  • • aloha
  • • xarm
  • • pusht

例如,要安装带有aloha和pusht的🤗 LeRobot,使用:


      
      
          

        pip install 
        ".[aloha, pusht]"
      
    

要使用Weights and Biases进行实验跟踪,请登录:


      
      
          

        wandb login
      
    

演练


      
      
          

        .
          

        ├──
         examples             
        # 包含演示示例,从这里开始学习LeRobot
          

        ├──
         lerobot
          

        |
           
        ├──
         configs          
        # 包含所有可以在命令行中覆盖的Hydra yaml文件的选项
          

        |
           
        |
           
        ├──
         
        default
        .
        yaml   
        # 默认选择,它加载pusht环境和扩散策略
          

        |
           
        |
           
        ├──
         env            
        # 各种模拟环境及其数据集:aloha.yaml、pusht.yaml、xarm.yaml
          

        |
           
        |
           
        └──
         policy         
        # 各种策略:act.yaml、diffusion.yaml、tdmpc.yaml
          

        |
           
        ├──
         common           
        # 包含类和实用程序
          

        |
           
        |
           
        ├──
         datasets       
        # 各种人类示范数据集:aloha、pusht、xarm
          

        |
           
        |
           
        ├──
         envs           
        # 各种模拟环境:aloha、pusht、xarm
          

        |
           
        |
           
        ├──
         policies       
        # 各种策略:act、diffusion、tdmpc
          

        |
           
        |
           
        └──
         utils          
        # 各种实用程序
          

        |
           
        └──
         scripts          
        # 包含通过命令行执行的函数
          

        |
               
        ├──
         
        eval
        .
        py                 
        # 加载策略并在环境上评估它
          

        |
               
        ├──
         train
        .
        py                
        # 通过模仿学习和/或强化学习训练策略
          

        |
               
        ├──
         push\_dataset\_to\_hub
        .
        py  
        # 将您的数据集转换为LeRobot数据集格式并将其上传到Hugging Face hub
          

        |
               
        └──
         visualize\_dataset
        .
        py    
        # 加载数据集并渲染其演示
          

        ├──
         outputs               
        # 包含脚本执行结果:日志、视频、模型检查点
          

        └──
         tests                 
        # 包含用于持续集成的pytest实用程序
      
    

可视化数据集

查看示例1,演示了如何使用我们的数据集类,该类会自动从Hugging Face hub下载数据。‍

您还可以通过从命令行执行我们的脚本来本地可视化数据集中的情节:


      
      
          

        python lerobot
        /
        scripts
        /
        visualize\_dataset
        .
        py \
          

            
        --
        repo
        -
        id lerobot
        /
        pusht \
          

            
        --
        episode
        -
        index 
        0
      
    

它将打开rerun.io并显示摄像头流、机器人状态和动作,就像这样:

picture.image

我们的脚本还可以可视化存储在远程服务器上的数据集。有关更多说明,请参见python lerobot/scripts/visualize_dataset.py --help

评估预训练策略

查看示例2,演示了如何从Hugging Face hub下载预训练策略,并在其对应的环境中运行评估。

我们还提供了一个更强大的脚本,可以在同一轮滚动期间并行评估多个环境。以下是使用在lerobot/diffusion_pusht上托管的预训练模型的示例:


      
      
          

        python lerobot
        /
        scripts
        /
        eval
        .
        py \
          

            
        -
        p lerobot
        /
        diffusion\_pusht \
          

            
        eval
        .
        n\_episodes
        =
        10
         \
          

            
        eval
        .
        batch\_size
        =
        10
      
    

注意:在训练自己的策略之后,您可以使用以下命令重新评估检查点:


      
      
          

        python lerobot
        /
        scripts
        /
        eval
        .
        py \
          

            
        -
        p PATH
        /
        TO
        /
        TRAIN
        /
        OUTPUT
        /
        FOLDER
      
    

有关更多说明,请参见python lerobot/scripts/eval.py --help

训练自己的

策略

查看示例3,演示了如何开始训练模型。

一般来说,您可以使用我们的训练脚本轻松地训练任何策略。要使用wandb记录训练和评估曲线,请确保您已运行wandb login。以下是在Aloha模拟环境的插入任务上由人类收集的轨迹上训练ACT策略的示例:


      
      
          

        python lerobot
        /
        scripts
        /
        train
        .
        py \
          

            policy
        =
        act \
          

            
        env
        =
        aloha \
          

            env
        .
        task
        =
        AlohaInsertion
        -
        v0 \
          

            dataset\_repo\_id
        =
        lerobot
        /
        aloha\_sim\_insertion\_human
      
    

实验目录会自动生成,并显示为您的终端中的黄色。它看起来像outputs/train/2024-05-05/20-21-12_aloha_act_default。您可以通过在train.py Python命令中添加此参数来手动指定实验目录:


      
      
          

            hydra
        .
        run
        .
        dir
        =
        your
        /
        new
        /
        experiment
        /
        dir
      
    

wandb日志的链接也会显示在您的终端中的黄色中。以下是来自wandb的日志示例:

picture.image

您可以通过添加以下参数来禁用wandb:


      
      
          

            wandb
        .
        disable\_artifact
        =
        true
         \
          

            wandb
        .
        enable
        =
        false
      
    

注意:为了效率,在训练期间,每个检查点都会在少量情节上进行评估。训练后,您可能希望在更多情节上重新评估最佳检查点或更改评估设置。有关更多说明,请参见python lerobot/scripts/eval.py --help

贡献

如果您想要为🤗 LeRobot做出贡献,请查看我们的贡献指南。

添加新的数据集

要将数据集添加到hub,您需要使用写访问令牌登录,可以从Hugging Face设置生成:


      
      
          

        huggingface
        -
        cli login 
        --
        token 
        
 $
 {
 HUGGINGFACE\_TOKEN
 }
 
         
        --
        add
        -
        to
        -
        git
        -
        credential
      
    

然后将数据集文件夹移动到data目录中(例如data/aloha_ping_pong),并使用以下命令将数据集推送到hub:


      
      
          

        python lerobot
        /
        scripts
        /
        push\_dataset\_to\_hub
        .
        py \
          

        --
        data
        -
        dir data \
          

        --
        dataset
        -
        id aloha\_ping\_ping \
          

        --
        raw
        -
        format aloha\_hdf5 \
          

        --
        community
        -
        id lerobot
      
    

有关支持的数据集格式,请在lerobot/common/datasets/push_dataset_to_hub/${raw_format}_format.py中实现您自己的格式。您可以复制类似pusht_zarr、umi_zarr、aloha_hdf5或xarm_pkl的示例。

添加预训练策略

一旦您训练了策略,可以使用类似${hf_user}/${repo_name}的hub id将其上传到Hugging Face hub(例如lerobot/diffusion_pusht)。

您首先需要找到位于您的实验目录中的检查点(例如outputs/train/2024-05-05/20-21-12_aloha_act_default/checkpoints/002500)。它应该包含:

  • config.json:策略配置的序列化版本(遵循策略的数据类配置)。
  • model.safetensors:以Hugging Face Safetensors格式保存的一组torch.nn.Module参数。
  • config.yaml:包含策略、环境和数据集配置的Hydra训练配置。策略配置应与config.json完全匹配。环境配置对于任何想要评估您的策略的人很有用。数据集配置只是用于可重现性的纸质轨迹。

要将它们上传到hub,请运行以下命令:


      
      
          

        huggingface
        -
        cli upload 
        
 $
 {
 hf\_user
 }
 
        /
        
 $
 {
 repo\_name
 }
 
         path
        /
        to
        /
        checkpoint
        /
        dir
      
    

有关其他人可能如何使用您的策略的示例,请参见eval.py。

使用性能分析改进您的代码

性能分析评估策略的代码片段示例:


      
      
          

        from
         torch
        .
        profiler 
        import
         profile
        ,
         record\_function
        ,
         
        ProfilerActivity
          

          

        def
         
        trace\_handler
        (
        prof
        ):
          

            prof
        .
        export\_chrome\_trace
        (
        
 f
 "tmp/trace\_schedule\_
 
 {prof.step\_num}
 
 .json"
 
        )
          

          

        with
         profile
        (
          

            activities
        =[
        ProfilerActivity
        .
        CPU
        ,
         
        ProfilerActivity
        .
        CUDA
        ],
          

            schedule
        =
        torch
        .
        profiler
        .
        schedule
        (
          

                wait
        =
        2
        ,
          

                warmup
        =
        2
        ,
          

                active
        =
        3
        ,
          

            
        ),
          

            on\_trace\_ready
        =
        trace\_handler
          

        )
         
        as
         prof
        :
          

            
        with
         record\_function
        (
        "eval\_policy"
        ):
          

                
        for
         i 
        in
         
        range
        (
        num\_episodes
        ):
          

                    prof
        .
        step
        ()
          

                    
        # insert code to profile, potentially whole body of eval\_policy function
      
    

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

picture.image

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生机器学习系统落地和实践
机器学习在字节跳动有着丰富业务场景:推广搜、CV/NLP/Speech 等。业务规模的不断增大对机器学习系统从用户体验、训练效率、编排调度、资源利用等方面也提出了新的挑战,而 Kubernetes 云原生理念的提出正是为了应对这些挑战。本次分享将主要介绍字节跳动机器学习系统云原生化的落地和实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论