I assume that when you say you have "72 pipes that have unique ID's", the remaining 3000+ pipes share an ID with one or more of the other pipes?
I created a dummy layer with 15 features, 3 (highlighted) of which have unique IDs, and the remaining ones with shared IDs:

You can then run the following expression in Select by Expression:
with_variable('parent_id',"ID",
array_length(string_to_array(
aggregate(@layer,
aggregate:='concatenate',
expression:=to_string(@id),
filter:="ID"=@parent_id,
concatenator:=','),
delimiter:=',')
) = 1)
Basically it compares each feature to all the other features to find out how many features have the same ID.
This will select only the unique features (ID 2, 3 and 6). If you wanted the non-unique features, you can change the '= 1' to '> 1' in the expression.
Edit: a quicker, cleaner expression that achieves the same outcome, as suggested by @she_weeds, is to use:
count(1,"ID") = 1
Finally, right click on the layer, and choose Export->Save Selected Features As... and choose a new filename to export to.