Konfiguráció megváltoztatása a PySpark futási idején

szavazat
2

Próbáltam telepíteni egy képzett Faiss-indexet a PySparkba, és elosztott keresést végeztem. Tehát az egész folyamat magában foglalja:

  1. Pre-folyamat
  2. Töltse be a Faiss-indexet (~ 15G) és végezze el a Faiss-keresést
  3. Utólagos feldolgozás és írás a HDFS-hez

A CPU-kat feladatonként 10-re állítottam ( spark.task.cpus=10 ) a többszálú keresés elvégzéséhez. De az 1. és a 3. lépés feladatonként csak 1 CPU-t képes felhasználni. Az összes beállítandó CPU felhasználása érdekében spark.task.cpus=1 az 1. és 3. lépés előtt megpróbáltam beállítani a RuntimeConfig de úgy tűnik, hogy elakadt a programom. Tanácsok a konfiguráció futásidejű megváltoztatásához vagy a probléma optimalizálásához?

Kód példa:

def load_and_search(x, model_path):
    faiss_idx = faiss.read_index(model_path)
    q_vec = np.concatenate(x)
    _, idx_array = faiss_idx.search(q_vec, k=10)
    return idx_array


data = sc.textFile(input_path)

# preprocess, only used one cpu per task
data = data.map(lambda x: x)

# load faiss index and search, used multiple cpus per task
data = data.mapPartitioins(lambda x: load_and_search(x, model_path))

# postprocess and write, one cpu per task
data = data.map(lambda x: x).saveAsTextFile(result_path)
A kérdést 26/04/2020 10:00
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Alternatív ötlet: használja mapPartitions az 1. és 3. lépéshez. Ezután minden dolgozón belül használjon többfeldolgozó készletet a partícióban lévő elemek párhuzamos leképezéséhez. Ilyen módon a munkavállalóhoz rendelt összes cpus felhasználható konfiguráció megváltoztatása nélkül (amit nem tudok, hogy egyáltalán lehetséges).

pszeudokódját:

def item_mapper(item):
    return ...

def partition_mapper(partition):
    pool = mp.Pool(processes=10)
    yield from pool.imap(partition, item_mapper)

rdd.mapPartitions(partition_mapper)
Válaszolt 13/05/2020 10:59
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more