In the course of executing within NonlinearModelFit the function kk is being evaluated with symbolic arguments, hence the warning message. The way to avoid the warning message is not to use a compiled function in this case. However, you still get a result (and the correct one) because when a CompiledFunction encounters a case where the arguments supplied to it are not numerical it will default to evaluating with the original expression. So one way to fix this is to wrap your kk with Quiet ;-) as in
NonlinearModelFit[dat, Quiet[kk[a, b, x]], {a, b}, x]
Basically you tell it to shut up.