Devasa veriler için python'da t-sne uygulama hızını artırın


18

Her biri 200 boyutlu ( doc2vec) olan yaklaşık 1 milyon vektörde boyutsal küçültme yapmak istiyorum . Bunun için modülden TSNEuygulama kullanıyorum sklearn.manifoldve asıl sorun zaman karmaşıklığı. Bununla birlikte method = barnes_hut, hesaplama hızı hala düşüktür. Bir süre Bellek yetersiz bile.

130G RAM ile 48 çekirdekli bir işlemcide çalıştırıyorum. Bunu paralel olarak çalıştırmak veya süreci hızlandırmak için bol kaynak kullanmak için bir yöntem var mı?


Harita küçültmeyi Spark gibi bir çerçevede denediniz mi?
Dawny33

Hayır .. nasıl çalışır ve lütfen beni yönlendirir misin ..
yazhi

Pl anlamak için Spark'ın belgelerine gitmek :)
Dawny33

1
Bak bakalım bu Spark uygulama çalışır.
Emre

1
Spark için Scala. Bir python uygulaması istiyorsanız bunu çevirebilirsiniz; Spark da python üzerinde çalışıyor.
Emre

Yanıtlar:



7

FFT hızlandırmalı İnterpolasyon tabanlı t-SNE'ye ( kağıt , kod ve Python paketi ) bakın.

Özetden:

T-SNE hesaplamasını önemli ölçüde hızlandıran Hızlı Fourier Dönüşümü hızlandırılmış İnterpolasyon tabanlı t-SNE (FIt-SNE) sunuyoruz. T-SNE'nin en çok zaman alan adımı, eşit aralıklı bir ızgaraya enterpolasyon yaparak ve daha sonra evrişimi gerçekleştirmek için hızlı Fourier dönüşümünü kullanarak hızlandırdığımız bir evrişimdir. Ayrıca, çok iş parçacıklı yaklaşık en yakın komşuları kullanarak yüksek boyutlardaki girdi benzerliklerinin hesaplanmasını da optimize ediyoruz.

Makalede ayrıca bir milyon nokta ve 100 boyutlu (OP'nin ayarına benzer) bir veri kümesi örneği vardır ve ~ 1 saat sürmektedir.


5

SO'da cevap olmadığı için kendime github sayfasında sordum ve GaelVaroquaux tarafından aşağıdaki cevabı belirterek sorun kapatıldı.

Yalnızca vektör işlemini paralelleştirmek istiyorsanız, MKL ile derlenmiş bir numpy derlemesi kullanmalısınız (kendiniz yapmaya çalışmayın, zorlayıcıdır).

Büyük olasılıkla daha büyük kazanımlara yol açacak algoritmanın kendisinde yüksek seviyeli paralellik yaklaşımları olabilir. Ancak, koda hızlı bir şekilde baktıktan sonra bunu yapmanın net bir yolunu görmedim.

Daha mavi gökyüzü dilek listesi olduğundan, bu konuyu ileriye ve kapatmaya gidiyorum. Tamamen katılıyorum, TSNE'nin daha hızlı gitmesini istiyorum ve paralelliğin kolay olması harika olurdu. Ancak mevcut durumda, bu tür istek listesiyle başa çıkabileceğimiz bir durumda olmak için daha fazla çalışma gerekmektedir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.