Given an unlabeled dataset and an annotation budget, we study how to selectively label a fixed number of instances so that semi-supervised learning (SSL) on such a partially labeled dataset is most effective. We focus on \textit{selecting} the right data to label, in addition to usual SSL's propagating labels from labeled data to the rest unlabeled data. This instance selection task is challenging, as without any labeled data we do not know what the objective of learning should be.
Intuitively, no matter what the downstream task is, instances to be labeled must be {\it representative} and {\it diverse}: The former would facilitate label propagation to unlabeled data, whereas the latter would ensure coverage of the entire dataset. We capture this idea by selecting cluster prototypes, either in a pretrained feature space, or along with feature optimization, both without labels.
Our unsupervised selective labeling consistently improves SSL methods over state-of-the-art active learning given labeled data, by $8 \approx 25\times$ in label efficiency. For example, it boosts FixMatch by 10\% (14\%) in accuracy on CIFAR-10 (ImageNet-1K) with 0.08\% (0.2\%) labeled data, demonstrating that small computation spent on selecting what data to label brings significant gain especially under a low annotation budget. Our work sets a new standard for practical and efficient SSL.