LeRobot documentation
Veri Setleri
Veri Setleri
LeRobotDataset, her LeRobot betiğinin okuduğu ve yazdığı biçimdir. Bölüm (episode) farkındalığına sahiptir, video gözlemlerini anında çözer ve Hugging Face Hub ile çift yönlü veri alışverişi yapar.
Biçim ve ortak işlemler için LeRobotDataset Kullanımı, göç için Büyük Veri Setlerini Taşıma ve CLI için Araçlar başlıklarına bakın.
LeRobotDataset
sınıf lerobot.datasets.LeRobotDataset
< source >( repo_id: strroot: str | pathlib.Path | None = Noneepisodes: list[int] | None = Noneepisode_filter: collections.abc.Callable[[dict], bool] | None = Noneimage_transforms: collections.abc.Callable | None = Nonedelta_timestamps: dict[str, list[float]] | None = Nonetolerance_s: float = 0.0001revision: str | None = Noneforce_cache_sync: bool = Falsedownload_videos: bool = Truevideo_backend: str | None = Nonereturn_uint8: bool = Falsedepth_output_unit: str = 'mm'batch_encoding_size: int = 1rgb_encoder: lerobot.configs.video.RGBEncoderConfig | None = Nonedepth_encoder: lerobot.configs.video.DepthEncoderConfig | None = Noneencoder_threads: int | None = Nonestreaming_encoding: bool = Falseencoder_queue_maxsize: int = 30repo_type: str = 'dataset'token: str | bool | None = Nonevideo_decoder_cache_size: int | None = None )
add_frame
< source >( frame: dict )
Mevcut bölüm tamponuna tek bir kare ekleyin.
DatasetWriter.add_frame metoduna devreder. Veri seti yazma modunda olmalıdır (create veya resume ile oluşturulmuş).
clear_episode_buffer
< source >( delete_images: bool = True )
Kaydetmeden mevcut bölüm tamponunu silin.
DatasetWriter.clear_episode_buffer metoduna devreder. Başarısız veya yarıda kalmış bir kayıt bölümünü atmak için kullanışlıdır.
Görsel gözlemlere uygulanan dönüştürmeyi kaldırın.
oluştur
< source >( repo_id: strfps: intfeatures: dictroot: str | pathlib.Path | None = Nonerobot_type: str | None = Noneuse_videos: bool = Truetolerance_s: float = 0.0001image_writer_processes: int = 0image_writer_threads: int = 0video_backend: str | None = Nonebatch_encoding_size: int = 1rgb_encoder: lerobot.configs.video.RGBEncoderConfig | None = Nonedepth_encoder: lerobot.configs.video.DepthEncoderConfig | None = Nonemetadata_buffer_size: int = 10streaming_encoding: bool = Falseencoder_queue_maxsize: int = 30encoder_threads: int | None = Nonevideo_files_size_in_mb: int | None = Nonedata_files_size_in_mb: int | None = None )
Parametreler
- repo_id — Depo tanımlayıcısı, genellikle
'{hf_user}/{dataset_name}'şeklindedir. - fps — Veri toplama sırasında kullanılan saniye başına kare sayısı.
- features — Özellik adlarını tür/şekil meta verilerine eşleyen özellik spesifikasyonu sözlüğü.
- root — Veri seti depolama için yerel dizin. Varsayılan olarak
$HF_LEROBOT_HOME/{repo_id}'dir. - robot_type — Metadata'de saklanan isteğe bağlı robot türü dizgesi.
- use_videos —
Trueise, görsel modaliteler MP4 videoları olarak saklanır.Falseise, görseller olarak saklanır. - tolerance_s — Saniye cinsinden zaman damgası senkronizasyon toleransı.
- image_writer_processes — Asenkron görüntü yazımı için alt süreç sayısı.
0yalnızca iş parçacıklarının kullanılacağı anlamına gelir. - image_writer_threads — Asenkron görüntü yazımı için iş parçacığı sayısı.
- video_backend — Video çözme arka ucu (geri okuma sırasında kullanılır).
- batch_encoding_size — Videoları toplu olarak kodlamadan önce biriktirilecek bölüm sayısı.
1derhal kodlama anlamına gelir. - rgb_encoder — Kameralar için video kodlayıcı ayarları (kodlayıcı, kalite vb.).
Noneolduğundargb_encoder_defaults()kullanılır. - depth_encoder — Derinlik kameraları için video kodlayıcı ayarları (kodlayıcı, kalite vb.).
Noneolduğundadepth_encoder_defaults()kullanılır. - encoder_threads — Kodlayıcı iş parçacığı sayısı (global).
Nonekodlayıcının karar vermesine izin verir. - metadata_buffer_size — Parquet'e yazılmadan önce tamponlanan bölüm (episode) metadata kayıtlarının sayısı
- streaming_encoding —
Trueise, görüntülerin önce yazılması yerine video kareleri yakalama sırasında gerçek zamanlı olarak kodlanır. - encoder_queue_maxsize — Akış kodlaması kullanılırken kamera başına tamponlanan maksimum kare sayısı.
Veri kaydı için sıfırdan yeni bir LeRobotDataset oluşturun.
Aktif bir DatasetWriter içeren yazma modunda bir veri seti döndürür. Veri setini doldurmak için add_frame / save_episode kullanın, ardından bitince finalize çağırın.
Bekleyen tüm işleri boşaltın ve yazarları kapatın.
Veri toplama/dönüştürme işleminden sonra çağrılmalıdır, aksi takdirde altbilgi (footer) meta verileri parquet dosyalarına yazılmayacak ve veri seti geçersiz olacaktır.
Idempotent — birden fazla kez çağrılması güvenlidir. Bu açıkça çağrılmazsa DatasetWriter.del bir güvenlik ağı olarak çalışır.
Görüntü dönüşümleri uygulanmadan ham bir kare alın.
__getitem__'nin aksine, bu, verilen dizindeki ham HF veri seti satırını, delta-zaman damgası genişletmesi, video çözümü veya görüntü dönüşümleri olmadan döndürür.
Bölüm tamponunda kaydedilmemiş kareler olup olmadığını kontrol edin.
push_to_hub
< source >( branch: str | None = Nonetags: list | None = Nonelicense: str | None = 'apache-2.0'tag_version: bool = Truepush_videos: bool = Trueprivate: bool | None = Noneallow_patterns: list[str] | str | None = Noneupload_large_folder: bool = False**card_kwargs )
Parametreler
- branch — İsteğe bağlı olarak itilecek dal. Var olmayan durumlarda mevcut revizyondan oluşturulur.
- tags — Veri seti kartı için isteğe bağlı etiketler listesi.
- license — Veri seti kartı için lisans tanımlayıcısı.
- tag_version —
Trueise, mevcut kod tabanı sürümü için bir Git etiketi oluşturur. - push_videos —
Falseise,videos/dizininin yüklenmesi atlanır. - private —
Trueise özel bir depo oluşturulur. Varsayılan olarakNoneise, Hub'daki kuruluş varsayılanına başvurulur (yalnızca kuruluşları etkiler). - allow_patterns — Yükleyecek dosyaları kısıtlayan Glob desen(leri).
- upload_large_folder — Geriye dönük uyumluluk için korunur ve yok sayılır.
upload_foldertüm boyutlardaki veri kümelerini işler. - **card_kwargs — Veri seti kartı oluşturmaya iletilecek ek anahtar kelime argümanları.
Veri setini Hugging Face Hub'a yükleyin.
Depo yoksa oluşturur, tüm veri seti dosyalarını yükler (isteğe bağlı olarak videolar hariç), bir veri seti kartı oluşturur ve revizyonu mevcut kod tabanı sürümüyle etiketler.
devam et
< source >( repo_id: strroot: str | pathlib.Path | None = Nonetolerance_s: float = 0.0001revision: str | None = Noneforce_cache_sync: bool = Falsevideo_backend: str | None = Nonebatch_encoding_size: int = 1rgb_encoder: lerobot.configs.video.RGBEncoderConfig | None = Nonedepth_encoder: lerobot.configs.video.DepthEncoderConfig | None = Noneencoder_threads: int | None = Noneimage_writer_processes: int = 0image_writer_threads: int = 0streaming_encoding: bool = Falseencoder_queue_maxsize: int = 30token: str | bool | None = None )
Parametreler
- repo_id — Mevcut veri setinin deposu tanımlayıcısı.
- root — Veri setinin yerel dizini. Sağlandığında, Hub indirmeleri doğrudan bu dizine aktarılır. Atlandığında, Hub indirmeleri
$HF_LEROBOT_HOME/hubaltında revizyon güvenli bir anlık görüntü önbelleği kullanır. - tolerance_s — Saniye cinsinden zaman damgası senkronizasyon toleransı.
- revision — Git revizyonu (dal, etiket veya commit hash). Varsayılan olarak mevcut kod tabanı sürüm etiketidir.
- force_cache_sync —
Trueise, yerel bir önbellek mevcut olsa bile Hub'dan meta verileri yeniden indirir. - video_backend — Verileri geri okumak için video çözme arka ucu.
- batch_encoding_size — Videoları toplu olarak kodlamadan önce biriktirilecek bölüm sayısı.
- rgb_encoder — Kameralar için video kodlayıcı ayarları (kodlayıcı, kalite vb.).
Noneolduğundargb_encoder_defaults()kullanılır. - depth_encoder — Derinlik kameraları için video kodlayıcı ayarları (kodlayıcı, kalite vb.).
Noneolduğundadepth_encoder_defaults()kullanılır. - encoder_threads — Kodlayıcı iş parçacığı sayısı (global).
Nonekodlayıcının karar vermesine izin verir. - image_writer_processes — Asenkron görüntü yazımı için alt süreçler.
- image_writer_threads — Asenkron görüntü yazımı için iş parçacıkları.
- streaming_encoding —
Trueise, video yakalama sırasında gerçek zamanlı olarak kodlanır. - encoder_queue_maxsize — Akış için kamera başına en fazla tamponlanan kare sayısı.
- token — Hub'dan metadata indirilmesi gerekiyorsa kullanılan kimlik doğrulama belirteci. Belirteç, veri seti örneğinde saklanmaz.
Mevcut bir veri setinde kaydı yeniden başlatın.
Mevcut bir veri setinden (yerel veya Hub) meta verileri yükler ve yeni bölümlerin eklenmesi için bir DatasetWriter oluşturur. Altta yatan HF veri seti, finalize çağrılana ve ardından veri okunana kadar yüklenmez.
save_episode
< source >( episode_data: dict | None = Noneparallel_encoding: bool = True )
Parametreler
- episode_data — İsteğe bağlı, önceden oluşturulmuş episode sözlüğü.
Noneise,add_frametarafından doldurulan dahili episode tamponunu kullanır. - parallel_encoding —
Trueise ve birden fazla kamera varsa, süreç havuzu kullanılarak videolar paralel olarak kodlanır.
Yükseltilen
RuntimeError
RuntimeError— Veri seti salt okunursa (yazar yoksa).
Mevcut bölüm tamponunu diske kaydedin.
DatasetWriter.save_episode metoduna devreder. Videoları kodlar, parquet verilerini yazar ve metadata'yı günceller. İşlem sonrasında episode tamponu sıfırlanır.
Altta yatan veri setinden belirli sütunları seçin.
Tüm özellikleri yüklemeye gerek kalmadan yeniden oynatma sırasında eylem dizilerini çıkarmak için kullanışlıdır.
Yalnızca istenen sütunları içeren bir datasets.Dataset döndürür.
Görsel gözlemlere uygulanan dönüştürmeyi değiştirin.
LeRobotDatasetMetadata
sınıf lerobot.datasets.LeRobotDatasetMetadata
< source >( repo_id: strroot: str | pathlib.Path | None = Nonerevision: str | None = Noneforce_cache_sync: bool = Falsemetadata_buffer_size: int = 10repo_type: typing.Literal['dataset', 'bucket'] = 'dataset'token: str | bool | None = None )
LeRobot veri seti için meta veri kapsayıcısı.
Bir veri setinin yapısını, içeriğini ve istatistiklerini tanımlayan info.json, stats.json, tasks.parquet ve episodes/ parquet dosyalarını yönetir.
oluştur
< source >( repo_id: strfps: intfeatures: dictrobot_type: str | None = Noneroot: str | pathlib.Path | None = Noneuse_videos: bool = Truemetadata_buffer_size: int = 10chunks_size: int | None = Nonedata_files_size_in_mb: int | None = Nonevideo_files_size_in_mb: int | None = None )
Parametreler
- repo_id — Depo tanımlayıcısı (ör.
'user/my_dataset'). - fps — Veri toplama sırasında kullanılan saniye başına kare sayısı.
- features — Özellik adlarını tür/şekil meta verilerine eşleyen özellik spesifikasyonu sözlüğü.
- robot_type — Metadata'de saklanan isteğe bağlı robot türü dizgesi.
- root — Veri seti için yerel dizin. Varsayılan olarak
$HF_LEROBOT_HOME/{repo_id}değerini alır. Zaten var olmamalıdır. - use_videos —
Trueise, görsel modaliteler MP4 videoları olarak kodlanır. - metadata_buffer_size — Parquet'e yazılmadan önce tamponlanan bölüm (episode) metadata kayıtlarının sayısı
- chunks_size — Parça dizini başına en fazla dosya sayısı.
Nonevarsayılanı kullanır. - data_files_size_in_mb — MB cinsinden en büyük parquet dosya boyutu.
Nonevarsayılanı kullanır. - video_files_size_in_mb — MB cinsinden maksimum video dosya boyutu.
Nonevarsayılanı kullanır.
Sıfırdan yeni bir LeRobot veri seti için meta veri oluşturun.
Sağlanan özellik şeması ve veri kümesi ayarlarıyla diskte info.json dosyasını başlatır. Henüz herhangi bir bölüm verisi yazılmaz.
Okuma işlemleri için meta verilerin tamamen yüklendiğinden emin olun.
Güçsüz (idempotent) — metadata zaten bellekteyse bu tek bir is None kontrolüdür. Aynı örnekte yazma modundan okuma moduna geçmeden önce bunu çağırın.
filter_episodes
< source >( predicate: Callablecandidates: list[int] | None = None )
Belirli bir öngörü (predicate) koşulunu sağlayan meta verileri olan bölümleri filtreleyin.
Metadata tamponunu boşaltın ve parquet yazarını kapatın.
Güçsüz (idempotent) — birden fazla kez çağrılmak için güvenlidir.
Güncel parça ve dosya boyutu ayarlarını getirin.
get_data_file_path
< source >( ep_index: int )
Verilen bölüm dizini için göreli parquet dosya yolunu döndürür.
Doğal dilde bir görev verildiğinde, görev zaten veri setinde varsa task_index'ini, aksi halde None döndürür.
get_video_file_path
< source >( ep_index: intvid_key: str )
Verilen bölüm ve video anahtarı için göreli video dosya yolunu döndürür.
Derinlik özellik istatistiklerini, kaydedilen birimlerinden output_unit birimine yerinde yeniden ölçeklendirin.
Derinlik istatistikleri, karelerin kaydedildiği birimde saklanır
(features[key]["info"]["depth_unit"]), ancak kareler okuma sırasında output_unit biriminde döndürülür. Bu, birim taşıyan istatistik girdilerini dönüştürerek
istatistiklerin, tüketicilerin gördüğü karelerle eşleşmesini sağlar.
save_episode
< source >( episode_index: intepisode_length: intepisode_tasks: listepisode_stats: dictepisode_metadata: dict )
Parametreler
- episode_index — Kaydedilen bölümün sıfır tabanlı indeksi.
- episode_length — Bu bölümdeki kare sayısı.
- episode_tasks — Bu bölüm için görev açıklamalarının listesi.
- episode_stats — Bu bölüm için özellik başına istatistikler.
- episode_metadata — Ek meta veriler (parça/dosya dizinleri, kare aralıkları, video zaman damgaları vb.).
Bölüm (episode) meta verilerini kalıcı hale getirin, veri seti bilgilerini güncelleyin ve istatistikleri birleştirin.
Bölümün meta verilerini tamponlu parquet yazıcısına yazar, info.json içindeki toplam bölüm/kare sayaçlarını artırır ve bölümün istatistiklerini devam eden veri seti istatistikleriyle birleştirir.
save_episode_tasks
< source >( tasks: list )
Mevcut bölüm için görevleri kaydedin ve diske kalıcı olarak yazın.
Veri setinde henüz mevcut olmayan yeni görevlere ardışık görev dizinleri atanır ve görevler parquet dosyasına eklenir.
update_chunk_settings
< source >( chunks_size: int | None = Nonedata_files_size_in_mb: int | None = Nonevideo_files_size_in_mb: int | None = None )
Parametreler
- chunks_size — Parça dizini başına maksimum dosya sayısı. None ise mevcut değer korunur.
- data_files_size_in_mb — MB cinsinden veri parquet dosyaları için maksimum boyut. None ise mevcut değer korunur.
- video_files_size_in_mb — MB cinsinden video dosyaları için maksimum boyut. None ise mevcut değer korunur.
Veri seti oluşturulduktan sonra parça ve dosya boyutu ayarlarını güncelleyin.
Bu, kullanıcıların yapılandırıcıyı değiştirmeden depolama düzenini özelleştirmesine olanak tanır. Bu ayarlar, bölümlerin (episodes) nasıl parçalandığını ve yeni dosyalar oluşturulmadan önce dosyaların ne kadar büyüyebileceğini kontrol eder.
update_video_info
< source >( video_key: str | None = Nonevideo_encoder: lerobot.configs.video.VideoEncoderConfig | None = Nonepreserve_keys: collections.abc.Iterable[str] | None = None )
Parametreler
- video_key — Verilirse, yalnızca bu video anahtarını günceller. Aksi halde veri setindeki tüm video anahtarlarını günceller.
- video_encoder — Videoları üretmek için kullanılan kodlayıcı yapılandırması. Sağlandığında, alanları, akıttan türetilen
video.*girdilerinin yanındavideo.<field>girdileri olarak kaydedilir (bkz.get_video_info). - preserve_keys — Mevcut değerleri yeniden hesaplanmak yerine korunacak anahtarlar.
None(varsayılan) her anahtarı yeniden hesaplar.
info.json dosyasındaki özellik başına video bilgilerini doldurun veya yenileyin.
Uyarı: bu fonksiyon ilk bölüm videolarından bilgi yazar ve tüm videoların aynı şekilde kodlandığını varsayar. Ayrıca, bu, ilk bölümün mevcut olduğunu varsaydığını da ifade eder.
Her zaman videoları yeniden tarama yapar ve yeniden hesaplanan her anahtar için mevcut bilgileri üzerine yazar. preserve_keys, yeniden hesaplanmak yerine mevcut değerlerinin korunması gereken anahtarları listeler (ör. is_depth_map ve derinlik kuantizasyon parametreleri gibi veriye özgü girdiler).
MultiLeRobotDataset
sınıf lerobot.datasets.MultiLeRobotDataset
< source >( repo_ids: listroot: str | pathlib.Path | None = Noneepisodes: dict | None = Noneimage_transforms: collections.abc.Callable | None = Nonedelta_timestamps: dict[str, list[float]] | None = Nonetolerances_s: dict | None = Nonedownload_videos: bool = Truevideo_backend: str | None = Nonetoken: str | bool | None = None )
Birden fazla alt LeRobotDataset içeren bir veri seti.
Altta yatan LeRobotDatasetler fiilen birleştirilir ve bu sınıf, LeRobotDataset'in API yapısının büyük bölümünü benimser.
Bu veri setinden ve alt öğelerinden dönüştürmeyi kaldırın.
Bu veri setinin ve alt öğelerinin dönüşümünü değiştirin.
StreamingLeRobotDataset
sınıf lerobot.datasets.StreamingLeRobotDataset
< source >( repo_id: strroot: str | pathlib.Path | None = Noneepisodes: list[int] | None = Noneimage_transforms: collections.abc.Callable[[torch.Tensor], torch.Tensor] | None = Nonedelta_timestamps: dict[str, list[float]] | None = Nonetolerance_s: float = 0.0001revision: str | None = Noneforce_cache_sync: bool = Falsestreaming: bool | None = Nonebuffer_size: int = 1000max_num_shards: int = 16seed: int = 42rng: numpy.random._generator.Generator | None = Noneshuffle: bool = Truereturn_uint8: bool = Falsedepth_output_unit: str = 'mm'video_backend: str | None = Nonedata_root: str | pathlib.Path | None = Noneepisode_pool_size: int | None = Noneprefetch_episodes: int = 8byte_budget_gb: float = 8.0repeat: bool = Falserepo_type: typing.Literal['dataset', 'bucket'] = 'dataset'token: str | bool | None = Nonedecode_threads: int = 2decoded_queue_size: int = 8video_decoder_cache_size: int | None = Nonenative_http_connections: int | None = Nonenative_http_subranges: int = 1sidecar_lock_timeout_s: float = 1800sampling_strategy: lerobot.streaming.episode_pool.StreamingSamplingStrategy | str = <StreamingSamplingStrategy.REMAINING: 'remaining'> )
LeRobot veri kümeleri için bölüm kapsamındaki akış okuyucu.
Metadata yerel olarak önbelleğe alınırken, her rank yalnızca sahip olduğu tam bölümler için gereken Parquet satırlarını ve MP4 bayt aralıklarını okur. N adet DataLoader işçisi ile her işçi, rank’ın bölümlerinin ayrık, kare dengeli bir kısmına sahiptir; kendi bölüm havuzuna ve bayt bütçesinin 1/N’ine sahiptir. Her sürecin kendi Python GIL’i olduğundan, N işçi örnekleri paralel olarak çözer ve birleştirir. Bölüm sahipliği ayrık olup her seçilen kare, her yinelemede tam olarak bir kez üretilir. MP4 yan dosyaları otomatik olarak çözümlenir ve yoksa revizyon anahtarlı yerel bir önbellekte oluşturulur.
Örnek:
Temel kullanım:
from lerobot.datasets.streaming_dataset import StreamingLeRobotDataset
# Create a streaming dataset with delta timestamps
delta_timestamps = {
"observation.image": [-1.0, -0.5, 0.0], # 1 sec ago, 0.5 sec ago, current
"action": [0.0, 0.1, 0.2], # current, 0.1 sec future, 0.2 sec future
}
dataset = StreamingLeRobotDataset(
repo_id="your-dataset-repo-id",
delta_timestamps=delta_timestamps,
)
# Iterate over the dataset
for i, item in enumerate(dataset):
print(f"Sample {i}: Episode {item['episode_index']} Frame {item['frame_index']}")
# item will contain stacked frames according to delta_timestamps
if i >= 10:
breakload_state_dict
< source >( state: dict )
Atlanan örnekleri getirmeden sonraki iteratörün çapa konumunu geri yükleyin.
Note:
Reproducing anchor order requires the same dataset, seed, sampler, pool settings,
distributed topology and number of DataLoader workers. With several workers, the offset
is the rank’s offset in whole batches of batch_size; each worker derives its own part,
because the DataLoader takes batches from its workers in turn. Random image transforms
are not restored by this method.
Bir eğitim rank'ının sahip olduğu tam bölüm sayısını döndürür.
Dengeli tüm-epizot bölme altında, bir eğitim sırasına ait kareleri döndürür.
Veri paralel sırasını ve dünya boyutunu, torch.distributed ve ortamdan önce sabitleyin.
Oluşturulan bir DataLoader işçisinin başlatılmış bir torch.distributed bileşeni yoktur; değerler ona pickling yoluyla ulaşır.
set_epoch
< source >( epoch: int )
Negatif olmayan bir epoch seçin ve rank-yerel devam ofsetini sıfırlayın.
state_dict
< source >( ) → dict[str, int]
Dönüş değeri
dict[str, int]
Epoch, üretilen örnek ofseti ve devam etme parti boyutu.
İteratörün mevcut sıra-yerel konumunu döndürür.
Not: DataLoader ön yükleme (prefetch) ile, üretilen örnekler eğitim tarafından henüz tüketilmemiş olabilir. Eğitim hattı, konumunu tamamlanan adımlardan geri yükler. Birden fazla DataLoader işçisi (worker) kullanıldığında, her işçi süreci yalnızca kendi konumunu tutar.