Hub Python Library documentation

Git ve HTTP paradigması

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Git ve HTTP paradigması

huggingface_hub kütüphanesi, git tabanlı depolardan (modeller, veri kümeleri veya Spaces) oluşan Hugging Face Hub ile etkileşim kurmak için kullanılan bir kütüphanedir. huggingface_hub ile Hub'a erişmenin iki ana yolu vardır.

İlk yaklaşım, “git tabanlı” olarak adlandırılan yöntem, standart git komutlarının doğrudan bir terminalde kullanılmasına dayanır. Bu yöntemle depoları klonlayabilir, commit oluşturabilir ve değişiklikleri manuel olarak itebilirsiniz. İkinci seçenek, “HTTP tabanlı” olarak adlandırılan yöntem, HfApi istemcisi kullanılarak HTTP istekleri göndermeyi içerir. Her iki yaklaşımın da artılarını ve eksilerini inceleyelim.

Git: Tarihsel CLI tabanlı yaklaşım

Başlangıçta, çoğu kullanıcı Hugging Face Hub ile git komutları aracılığıyla etkileşim kuruyordu; örneğin git clone, git add, git commit, git push, git tag veya git checkout.

Bu yaklaşım, geleneksel yazılım geliştirmede olduğu gibi, makinenizde depoyun tam bir yerel kopyasıyla çalışmanızı sağlar. Çevrimdışı erişime ihtiyacınız olduğunda veya bir depoyun tam geçmişini kullanmak istediğinizde bu bir avantaj olabilir. Ancak bunun da dezavantajları vardır: depoyu yerel olarak güncel tutmak, kimlik bilgilerini yönetmek ve büyük dosyaları (git-lfs aracılığıyla) yönetmek sizin sorumluluğunuzdadır; bu durum, büyük makine öğrenme modelleri veya veri kümeleriyle çalışırken zahmetli hale gelebilir.

Birçok makine öğrenmesi iş akışında, çıkarım için yalnızca birkaç dosya indirmeniz veya ağırlıkları dönüştürmeniz gerekebilir; bunun için tüm depoyu klonlamanıza gerek yoktur. Bu tür durumlarda git kullanmak gereksiz yere karmaşıklık yaratabilir.

HfApi: esnek ve kullanışlı bir HTTP istemcisi

HfApi sınıfı, büyük modeller veya veri setleriyle çalışırken bakımının zahmetli olabileceği yerel git depolarının kullanımına bir alternatif sağlamak üzere geliştirilmiştir. HfApi sınıfı, dosya indirme ve gönderme, dal ve etiket oluşturma gibi git tabanlı iş akışlarıyla aynı işlevselliği sunar; ancak senkronize tutulması gereken bir yerel klasör gerektirmez.

git tarafından zaten sağlanan işlevlerin yanı sıra HfApi sınıfı; depoları yönetme, verimli yeniden kullanım için önbellekleme kullanarak dosya indirme, Hub'da depoları ve meta verileri arama, tartışmalar, PR'lar ve yorumlar gibi topluluk özelliklerine erişme ve Spaces donanımı ile gizli bilgileri yapılandırma gibi ek özellikler sunar.

Hangisini kullanmalıyım? Ne zaman?

Genel olarak, huggingface_hub kütüphanesinin tüm durumlarda kullanılması önerilen yöntem HTTP tabanlı yaklaşımdır. HfApi ile değişiklikleri çekip itebilir, PR'ler, etiketler ve dallarla çalışabilir, tartışmalarla etkileşime girebilir ve daha fazlasını yapabilirsiniz.

Ancak, tüm git komutları HfApi üzerinden kullanılamaz. Bazıları asla uygulanmayabilir, ancak sürekli olarak iyileştirmeler yapıp bu farkı kapatmaya çalışıyoruz. Kullanım senaryonuzun kapsamda olmadığını görüyorsanız, lütfen GitHub'da bir sorun açın! Kullanıcılarımızla ve kullanıcılarımız için HF ekosistemini inşa etmemize yardımcı olacak geri bildirimlere her zaman açığız.

HTTP tabanlı HfApi'nin doğrudan git komutlarına tercih edilmesinin, git sürümleme özelliğinin Hugging Face Hub'dan yakın zamanda kaldırılacağı anlamına gelmediğini belirtmek gerekir. Mantıklı olduğu iş akışlarında git'in yerel olarak kullanılmasına her zaman olanak tanınacaktır.

Update on GitHub