با سلام عرض ادب
دوستان کسی تا حالا با sharding data کار کرده ؟ این برای دیتاهای بزرگ بکار میرود یعنی میان دیتا رو تیکه تیکه میکنند
چندتا سوال داشتم ممنون میشم راهنماییم کنید
-# وقتی دیتایی بزرگ مثله امیج نت یا هر دیتای بزرگ دیگه ایی در دسترس داریم و برای ترین یک شبکه استفاده میکنیم فرضا این دیتا به tfrecord یا lmdb هم تبدیل شده است. وقتی این دیتا رو یک shard در در نظر بگیریم موقع فراخوانی این دیتابیس همه شون در رم سیستم قرار میگیرند یا اینکه فقط به میزان بچ سایز در رم سیستم قرار میگیرد ؟ اگر اره ، چجوری ؟ پس بقیه اون دیتابیس کجا لود میشوند ؟ مگه اینطوری نیست که کل اون تک shard در رم سیستم قرار میگیرد و cpu به میزان اون بچ سایز از اون دیتاست fetch میکند و به GPU برای ترین شبکه میدهد ؟
همانطور که میدانید یکی از کارهای بدی که موقع ترین صورت میگیرد در صف انتظار موندن GPU برای اینکه CPU بهش داده رو اماده کنه این باعث میشه سرعت تریننیگ شبکه رو کند کنه برای رفع این مشکل بحث multi-processing هست بنظرتون شما این FLAG ها میتونه کارساز باشه و اینکه چجوری میشه تنظیمشون کرد برای کارهای خودمون
tf.app.flags.DEFINE_integer('batch_size', 32,
"""Number of images to process in a batch.""")
tf.app.flags.DEFINE_integer('image_size', 299,
"""Provide square images of this size.""")
tf.app.flags.DEFINE_integer('num_preprocess_threads', 4,
"""Number of preprocessing threads per tower. """
"""Please make this a multiple of 4.""")
tf.app.flags.DEFINE_integer('num_readers', 4,
"""Number of parallel readers during train.""")
# Images are preprocessed asynchronously using multiple threads specified by
# --num_preprocss_threads and the resulting processed images are stored in a
# random shuffling queue. The shuffling queue dequeues --batch_size images
# for processing on a given Inception tower. A larger shuffling queue guarantees
# better mixing across examples within a batch and results in slightly higher
# predictive performance in a trained model. Empirically,
# --input_queue_memory_factor=16 works well. A value of 16 implies a queue size
# of 1024*16 images. Assuming RGB 299x299 images, this implies a queue size of
# 16GB. If the machine is memory limited, then decrease this factor to
# decrease the CPU memory footprint, accordingly.
tf.app.flags.DEFINE_integer('input_queue_memory_factor', 16,
"""Size of the queue of preprocessed images. """
"""Default is ideal but try smaller values, e.g. """
"""4, 2 or 1, if host memory is constrained. See """
"""comments in code for more details.""")